我一直在寻找像我这样的先前问题,但似乎我找不到我需要的答案.
我的目标是阻止我的UDP侦听器不挂.我有一个UDP监听器等待消息,但如果没有任何东西可以接收它只是挂在那里.
我已经阅读了其他线程,他们说我需要将阻塞设置为false但我找不到如何设置它.对不起,我刚接触C#和socket编程.
这是我的听众的一部分:
while (true)
{
try
{
byte[] data = listener.Receive(ref groupEP);
IPEndPoint newuser = new IPEndPoint(groupEP.Address, groupEP.Port);
string sData = (System.Text.Encoding.ASCII.GetString(data));
}
catch (Exception e)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是它只是冻结在以下行:
byte[] data = listener.Receive(ref groupEP);
Run Code Online (Sandbox Code Playgroud)
使用UDPClient上的available属性(如果这是您正在使用的属性)来确定您是否要在网络队列中读取数据.
while (true)
{
try
{
if (listener.Available > 0) // Only read if we have some data
{ // queued in the network buffer.
byte[] data = listener.Receive(ref groupEP);
IPEndPoint newuser = new IPEndPoint(groupEP.Address, groupEP.Port);
string sData = (System.Text.Encoding.ASCII.GetString(data));
}
}
catch (Exception e)
{
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8983 次 |
最近记录: |