主机关闭连接

时间:2018-06-08 11:14:43

标签: c# .net tcp tcpclient

.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错了吗?

0 个答案:

没有答案