在vb.net中通过tcp发送文件和字符串

时间:2016-05-07 22:28:29

标签: vb.net send tcpclient tcplistener

如果我的术语在这个问题上不正确,请道歉,但请耐心等待。 我知道我想要实现什么,只是不确定类/函数等的正确名称。

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

因此,在外行人的术语中,我想创建一个服务器应用程序,它将侦听来自特定端口上的客户端的连接。客户端基本上会连接到服务器并说“嘿,我是客户端172.16.10.12”。我将发送一个名为test.txt的文件,其大小为2330k。该文件的MD5哈希是xxxxxxxxxxx"。

一旦进行了通信,我希望客户端然后发送文件' test.txt'到服务器;服务器将文件保存到适当的位置,然后生成文件的MD5哈希值,并将其与客户提出的MD5和文件大小进行比较,最后报告回客户端“确定”' Ok'或者'成功'。

如果文件大小或MD5不同,则会失败'

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

我希望一切都有道理!非常感谢您提供任何帮助。 这是我第一次使用TCP功能,之前因为感觉轻松而一直使用FTP。

1 个答案:

答案 0 :(得分: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)
        {
        }