0

我需要获取整个消息(响应),但socket.ReceiveBytes();只返回消息的一部分。我试图循环它,但是当没有接收到字节时它在超时时失败。

List<byte> lb = new List<byte>();
byte[] receivedMsg = socket.ReceiveBytes();   
while (receivedMsg.Length > 0)
{         
     lb.AddRange(receivedMsg);
     receivedMsg = socket.ReceiveBytes();
}

那么,我如何检查是否有要读取的字节?我如何阅读整个消息?

4

1 回答 1

0

由于它是 Chilkat 实现,您可能应该联系开发人员。但我发现这可能会有所帮助:http ://www.cknotes.com/?p=302

最终,您需要知道从套接字读取多少内容才能构成一条完整的消息。例如,如果上层协议是一个端口映射器,那么您就知道您期待 RFC 指定格式的消息 (http://tools.ietf.org/html/rfc1833。)

如果您在套接字连接上滚动您自己的协议,请使用 Chilkat 博客文章中关于将总消息的大小放在前 4 个字节中的方法。

于 2012-05-31T12:52:29.570 回答