UDPclient异步receive()怎么实现?

dezhengwei 2009-12-15 09:50:17
请给出c#的原代码,谢谢!
...全文
104 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
dezhengwei 2009-12-20
  • 打赏
  • 举报
回复
public void ReceiveMessages()
{
// Receive a message and write it to the console.
if (u == null)
{
e = new IPEndPoint(IPAddress.Any, 8002);
u = new UdpClient(e);
}
UdpState s = new UdpState();
s.e = e;
s.u = u;

MessageBox.Show("listening for messages");
u.BeginReceive(new AsyncCallback(ReceiveCallback), s);

//Do some work while we wait for a message. For this example,
//we'll just sleep
int TimeCount = 0;
while (!messageReceived)
{
if (TimeCount++ < 10)
{
Thread.Sleep(200);
}
else
{
MessageBox.Show("超时");
break;
}
}
}

public void ReceiveCallback(IAsyncResult ar)
{
//connectDone.Set();
UdpClient u = (UdpClient)((UdpState)(ar.AsyncState)).u;
IPEndPoint e = (IPEndPoint)((UdpState)(ar.AsyncState)).e;

Byte[] receiveBytes = u.EndReceive(ar, ref e);
string receiveString = Encoding.ASCII.GetString(receiveBytes);

//Console.WriteLine("Received: {0}", receiveString);
//textBox1.Text = "" + receiveString + "";
MessageBox.Show("" + receiveString + "");
messageReceived = true;
}
我自己回答了

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧