.NET TcpClient存在一个非常基本的问题。我希望向服务器发送100条消息,周期时间大约为1毫秒。
这是我的代码:
static void Main(string[] args)
{
TcpClient tcpclnt = new TcpClient();
tcpclnt.Connect("127.0.0.1", 59917);
var strm = tcpclnt.GetStream();
for (int i = 0; i < 100; ++i)
{
// Send string to server
byte[] outStream = Encoding.ASCII.GetBytes($"Hello World{i}!");
strm.Write(outStream, 0, outStream.Length);
strm.Flush();
Thread.Sleep(1); // causes exception :-(
}
tcpclnt.Close();
}
经过几次迭代(大多数是3次)后,我将得到一个例外:&#34;主机关闭连接&#34;。在我的例子中,主机是一个简单的TCP / UDP发送器/接收器应用程序,名为&#34; PacketSender&#34;。
但是,如果我删除等待,则异常消失。发送所有100条消息:
static void Main(string[] args)
{
TcpClient tcpclnt = new TcpClient();
tcpclnt.Connect("127.0.0.1", 59917);
var strm = tcpclnt.GetStream();
for (int i = 0; i < 100; ++i)
{
// Send string to server
byte[] outStream = Encoding.ASCII.GetBytes($"Hello World{i}!");
strm.Write(outStream, 0, outStream.Length);
strm.Flush();
}
tcpclnt.Close();
}
如何在不遇到异常的情况下减慢发送速度? 我使用TcpClient错了吗?