【问题标题】:Multi send() or receive() in TCPTCP 中的多发送()或接收()
【发布时间】:2012-04-02 07:08:26
【问题描述】:

我想做一些客户端和服务器来共享文件。我有一个问题,因为 TCP“消息”被合并了,尽管我设置了我想发送多少字节和接收多少字节。

我看了看,问题发生在我在第一个“消息”中发送文件名,然后(在 new Send() 中)我发送文件内容时,例如。

我通过在当前每个接收数据包后发送反馈消息来修复它。

有没有更好的方法?

【问题讨论】:

  • Data loss TCP IP C# 的可能重复项
  • 更多重复:12
  • 我做了类似string msg = "test"; byte[] buf = new byte[1024]; byte[] prefix = BitConverter.GetBytes(msg.Length); byte[] data = Encoding.UTF8.GetBytes(msg); Array.Copy(prefix, 0, buf, 0, prefix.Length); Array.Copy(data, 0, buf, prefix.Length, data.Length); socket.Send(buf); 的操作,但我现在不知道如何接收消息。

标签: c# sockets tcp


【解决方案1】:

为每条消息添加一个长度前缀。然后循环读取,直到收到任意数量的字节。

【讨论】:

    猜你喜欢
    • 2015-10-07
    • 2011-09-13
    • 1970-01-01
    • 2014-09-18
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    相关资源
    最近更新 更多