【发布时间】:2011-09-04 16:43:38
【问题描述】:
我正在开发一个 C# 应用程序,它通过 TCP/IP 连接到主机以发送然后使用 TCPClient Stream 接收响应。
问题是我可以使用 Stream.Write(...) 发送数据,但是当我尝试通过调用 Stream.Read(...) 来获取对我发送数据的响应时,它挂起并且永远不会返回。
我检查了像 Wire-Shark 这样的网络嗅探工具,可以看到我的网络接口正在接收来自主机的数据。为什么我的 TCPClient 没有读取这些数据?
WireShark显示的接收数据的Hex转储以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, 0, msgBytes.Length);
这就是阅读的代码......
byte[] bytesReceived = new byte[100];
int nBytesRead = myTCPStream.Read(bytesReceived, 0, bytesReceived.Length);
myTcpClient.Close();
感谢您的帮助。
【问题讨论】:
-
我的魔法水晶球还需要修理,所以我担心你必须同时向我们展示代码......
-
我也面临类似的问题。尝试将 NoDelay 设置为 true 但没有运气。 Wireshark 清楚地显示服务器已发送此数据,但网络流无法读取它。 HTTP/1.1 200 已建立连接\r\n
标签: c# stream tcpclient wireshark