我在将一小段数据(日期)发送到同一台计算机上运行的另一个 TcpClient 时遇到问题。
在下面的代码中,您将看到它在关闭 NetworkStream 之前处于休眠状态。如果我删除Sleep
它会导致间歇性问题,即数据不会在另一端出现。
我在这里做错了吗?
using (TcpClient client = new TcpClient())
{
client.Connect(new IPEndPoint(IPAddress.Loopback, _tcpServerPort));
NetworkStream clientStream = client.GetStream();
byte[] buffer = new ASCIIEncoding().GetBytes(theDateObject.ToString("yyyy-MM-dd HH:mm:ss"));
clientStream.Write(buffer, 0, buffer.Length);
clientStream.Flush();
System.Threading.Thread.Sleep(1000); // Remove this line and the data may not arrive at the other end
clientStream.Close();
}
其他一些信息:
- 在某些计算机上,您可以删除它
Sleep
而不会引起问题(可能是较慢的计算机?) - 我试过用
Close(int timeout)
(而不是睡觉)关闭 NetworkStream,但这没有帮助。 - 1000 毫秒的值是任意的——我怀疑其他值也可以。问题是:为什么首先需要它?