【发布时间】:2016-04-08 12:49:41
【问题描述】:
我无法运行此示例: https://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient%28v=vs.110%29.aspx
我对他们的代码所做的唯一更改是将所有内容都放在 main 方法中,当然还有我的端口名称。我可以连接到我的服务器,甚至可以发送数据。但是就行了
Int32 bytes = networkStream.Read(data, 0, data.Length);
程序无异常停止运行。微软自己的代码怎么不能工作?我的服务器还没有发送任何东西,但我认为这不重要吗? (虽然它接收得很好。)我读过一些你不能在其他线程中看到异常的东西,但我没有。 我也试过这个线程: C# tcp socket (networkstream.read won't work with 8.1)
它不起作用。我跑赢 7 thoguh。但我希望这适用于全新的窗口。
【问题讨论】:
-
读取是同步调用。你从服务器发送什么?
-
Read() 将阻塞/停止,直到收到一些数据。作为此阻塞的解决方法,您可以在阅读之前添加
if(networkStream.IsDataAvailable)。这样,它应该永远不会阻塞。 -
@ThariqNugrohotomo 如果它返回 false 怎么办?这并不意味着没有数据! IsDataAvailable 不适用于此。
-
@usr 根据我过去的经验,它可以工作。如果仍然返回 false,可能是你忘记刷新数据,可能接收到的数据仍然太小,或者底层 Stream 实现有问题。
-
或者,数据还在网络中,很快就会到。它不能工作。
标签: c# tcp networkstream