我在客户端应用程序中使用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);
接收(而(真实)):
byte[] data = new byte[BUFFERSIZE];
int receivedDataLength = socket.ReceiveFrom(data, ref ReceiveIP);
string s= Encoding.ASCII.GetString(data, 0, receivedDataLength);
我在接收时做了无限的时间,还有其他的事要做,虽然没有收到任何东西。我想检查是否有实际可用的数据然后接收其他不要等待。请注意,当前的receive方法会一直等到服务器发送消息。
答案 0 :(得分:2)
在调用socket.Available()
之前,您可以使用ReceiveFrom()
来确定是否有任何等待数据。但是,理想情况下,您应该考虑使用BeginReceiveFrom()
及其异步朋友将输入处理转移到其他线程。