我在客户端应用程序中使用 UDP Sokckts。 以下是一些代码片段:
SendIP = new IPEndPoint(IPAddress.Parse(IP), port);
ReceiveIP = (EndPoint)(new IPEndPoint(IPAddress.Any, 0));
socket = new Socket(
AddressFamily.InterNetwork,
SocketType.Dgram,
ProtocolType.Udp);
socket.Bind(ReceiveIP);
并接收 (while(true)):
byte[] data = new byte[BUFFERSIZE];
int receivedDataLength = socket.ReceiveFrom(data, ref ReceiveIP);
string s= Encoding.ASCII.GetString(data, 0, receivedDataLength);
我正在做一个无限的 while on receive,同时还有其他事情要做,即使什么都没有收到。我想检查是否有实际可用的数据然后 receive else 不要等待。请注意,当前的接收方法会一直等到服务器发送消息。
最佳答案
您可以使用socket.Available()
来确定在调用ReceiveFrom()
之前是否有任何等待数据。不过,理想情况下,您应该考虑使用 BeginReceiveFrom()
及其异步 friend 将输入处理分包给其他线程。
关于c# - .NET 中的 UDP 套接字客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2556867/