C# UDP 异步接收消息

heap-overflow 2013-01-26 09:52:17
最近想写一个关于局域网通信的工具,用到UDP接收消息时,不能实现异步接收。求哥哥姐姐们帮改一下下面的例子,达到这种效果:只有有广播,就会自动接收。小弟感激不尽

Socket sock = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050);
sock.Bind(iep);
EndPoint ep = (EndPoint)iep;
byte[] data = new byte[1024];
int recv = 0;
recv = sock.ReceiveFrom(data, ref ep);
string request = Encoding.Default.GetString(data, 0, recv);
textBox1.AppendText(request);

这个只能按一下,接收一次,如果用while(true)循环,效果超级不理想。网上都说用异步传输,可是小弟不太懂,求帮改一下这段代码。。
...全文
250 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ericmpdeng 2014-12-19
  • 打赏
  • 举报
回复
引用 5 楼 braveheart2010 的回复:
我已经学回来,有不会的可以call我,包学包会
你好我也在学相关内容,想请教你一个问题,UDP通信接收数据,一个端口是不是只能用一个线程处理?异步和同步的区别在哪儿?
heap-overflow 2013-02-19
  • 打赏
  • 举报
回复
我已经学回来,有不会的可以call我,包学包会
  • 打赏
  • 举报
回复
引用 楼主 braveheart2010 的回复:
这个只能按一下,接收一次,如果用while(true)循环,效果超级不理想。网上都说用异步传输,可是小弟不太懂,求帮改一下这段代码。。
参考:http://www.google.com.hk/search?hl=zh-CN&newwindow=1&safe=strict&tbo=d&q=MSDN+udpclient.beginreceive&oq=MSDN+udpclient.beginreceive&gs_l=serp.3...4196.4887.0.5159.6.6.0.0.0.0.0.0..0.0...0.0...1c.1.83_CSMeIpFA 学习一点核心入门技术没有偷懒的捷径。
northwesternwind 2013-01-26
  • 打赏
  • 举报
回复
引用 2 楼 braveheart2010 的回复:
引用 1 楼 northwesternwind 的回复:用这个: C# code?123456789public IAsyncResult BeginReceiveFrom( byte[] buffer, int offset, int size, SocketFlags socketFlags, ref EndPoint remote……
查msdn呀
heap-overflow 2013-01-26
  • 打赏
  • 举报
回复
引用 1 楼 northwesternwind 的回复:
用这个: C# code?123456789public IAsyncResult BeginReceiveFrom( byte[] buffer, int offset, int size, SocketFlags socketFlags, ref EndPoint remoteEP, AsyncCallback callbac……
不太懂啊,能详细点吗
northwesternwind 2013-01-26
  • 打赏
  • 举报
回复
用这个:
public IAsyncResult BeginReceiveFrom(
	byte[] buffer,
	int offset,
	int size,
	SocketFlags socketFlags,
	ref EndPoint remoteEP,
	AsyncCallback callback,
	Object state
)

110,476

社区成员

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

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

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