【问题标题】:sending both files and strings via tcp in vb.net在 vb.net 中通过 tcp 发送文件和字符串
【发布时间】:2016-09-02 19:47:19
【问题描述】:

抱歉,如果我对这个问题的用语不正确,请多多包涵。 我知道我想要实现什么,只是不确定类/函数等的正确名称是什么。

我需要使用 tcplistener 和 tcpclient 创建一个客户端/服务器应用程序,这将允许我发送字符串和文件......我想。

所以用外行的话来说,我想制作一个服务器应用程序,它会在特定端口上侦听来自客户端的连接。客户端基本上会连接到服务器并说“嘿,我是客户端 172.16.10.12。我将向您发送一个名为 test.txt 的文件,大小为 2330k。该文件的 MD5 哈希为 xxxxxxxxxxx”。

一旦通信发生,我希望客户端将文件“test.txt”发送到服务器;服务器将文件保存到适当的位置,然后生成文件的 MD5 哈希并将其与客户端建议的 MD5 和文件大小进行比较,然后最终向客户端报告“Ok”或“Success”。

如果文件大小或 MD5 不同,则为“失败”。

我不是要求任何人为我做这件事,而是要求有人将我推向正确的方向。我似乎在这里或 youtube 等上找到的所有教程/示例似乎都集中在文件或字符串上。我似乎找不到一个可以同时满足两者的,这是我认为我可能需要的,尽管我可能错了。

我希望一切都有意义!非常感谢您对此的任何帮助。 这是我第一次玩 TCP 功能,之前一直使用 FTP,因为感觉很容易。

【问题讨论】:

  • 您可以看到my answer to this question,这将帮助您实施正确的方法来区分您发送的数据(“数据包”)。
  • 至于将其拆分成块(如我对 user3815486 的回答的评论中所述),您首先必须向服务器发送文件的确切字节数,然后开始发送 8192 字节块到它,直到你读完整个文件。 服务器每次收到文件部分数据包时都必须这样做:8192 bytes -> Write to file -> Check if we've received the whole file (match against what the client sent).

标签: vb.net send tcpclient tcplistener


【解决方案1】:

我相信对于这个小文件,您可以在客户端将文件转换为字节,然后通过 tcp 将其作为字节数组发送,服务器应用程序将使用 File.WriteAllbytes 从字节数组重建文件。

Save byte array to file

这是从文件中获取字节的方法。 PS我不是很有经验只是发布一些东西..Reliable way to convert a file to a byte[]

这对于将字节数组作为 tcp 发送应该是开箱即用的,我从未尝试过我写的东西,但它必须工作。

 try
        {
            string Hostname = "127.0.0.1";
            TcpClient Client = new TcpClient(Hostname, 10000);
            byte[] packet = new byte[] { 0x17, 0x03, 0x01, 0x4c };
            Client.Client.Send(packet);
        }
        catch (SocketException e)
        {
        }

【讨论】:

  • 如果我将大文件转换为字节会怎样?
  • 我真的不知道我从未尝试过,但我建议你将字节数组分解成较小的数组,如果它太大的话,用一些标识符来判断哪个部分是哪个部分,然后像这样重建字节数组.我认为如果你不这样做,它无论如何都会分成很多部分,但你不会知道如何重建它..
  • 我发现它应该适合你。 codetechnic.blogspot.cz/2009/02/…
  • @John :如果您要转换的文件太大(对于 32 位应用程序最大为 2 GB),您将收到 OutOfMemoryException。同样将整个文件发送到一个Write() 将需要时间。请改用FileStream 并一次仅读取和发送文件的一部分(例如,一次 8192 字节 = 8 KB)。
猜你喜欢
  • 1970-01-01
  • 2013-02-27
  • 2013-06-28
  • 2014-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多