如何解决TCPClient不读取传入的数据
| 我正在使用一个C#应用程序,该应用程序通过TCP / IP连接到主机以发送并使用TCPClient Stream接收响应。 问题是我可以使用Stream.Write(...)发送数据,但是当我尝试通过调用Stream.Read(...)获取针对已发送数据的响应时,它挂起并且永不返回。 我已经检查了Wire-Shark之类的网络嗅探工具,可以看到我的网络接口正在接收来自主机的数据。为什么我的TCPClient无法读取此数据? WireShark显示的接收到的数据的十六进制转储以00开头,是否表示为Null字符,从而导致TCPClient读取问题? 00-1d-4f-fb-43-4b-00-1d-7e-3a-9a-20-08-00-45-00-00-34 这是编写代码...myTcpClient = new TcpClient();
myTcpClient.Connect(\"192.168.0.194\",1958);
Stream myTCPStream = myTcpClient.GetStream();
ASCIIEncoding asen = new ASCIIEncoding();
byte[] msgBytes = asen.GetBytes(\"Message to be sent.\");
myTCPStream.Write(msgBytes,msgBytes.Length);
那就是阅读的代码...
byte[] bytesReceived = new byte[100];
int nBytesRead = myTCPStream.Read(bytesReceived,bytesReceived.Length);
myTcpClient.Close();
感谢帮助。
解决方法
这可能是一个时序问题,但是很难看到您的代码(发送数据包后是否直接运行读取的代码?它是否在同一线程上?)
另一个想法:尝试将NoDelay属性设置为true。这告诉TCP堆栈立即将数据传递到您的应用程序,而不是等待完整的缓冲区(禁用Nagle算法)。这对于减少发送和接收小数据包时的延迟很有用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。