来自ReceiveFrom的打印缓冲区终止线程

时间:2011-01-21 21:00:45

标签: c# multithreading sockets networking

我在C#中有一个线程,每隔1秒从UDP套接字广播

在另一个帖子上,我有这个

 while (true)
 {
  if (m_UdpReceiveSocket.Poll(0, SelectMode.SelectRead))
  {
   EndPoint ep = new IPEndPoint(IPAddress.Any, s_BroadcastPort);
   byte[] buffer = new byte[1024];

   m_UdpReceiveSocket.ReceiveFrom(buffer, 0, 1024, SocketFlags.None, ref ep);

   Console.WriteLine("testing");
   Console.WriteLine( ASCIIEncoding.ASCII.GetString(buffer) + "  " + ((IPEndPoint) ep).Address + ":" + ((IPEndPoint) ep).Port);
  }

  Thread.Sleep(1);
 }

如果我注释掉第二次调用Console.WriteLine,一切正常,另一个线程广播,这个线程接收信息,但如果我使用第二个Console.WriteLine(即使没有引用EndPoint),那么线程退出没有任何例外,第二次调用Console.WriteLine

谢谢

问题解决了,我只需要考虑在转换为字符串

之前我收到了多少

作为一个侧面问题为什么我不能在Wireshark中看到我的数据包?

1 个答案:

答案 0 :(得分:0)

旁注。我相信我的同事在另一周也有同样的问题。如果您的客户端与服务器是同一台计算机,则不会在Wireshark中看到数据包。