一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 高效的.Net UDP異步編程實現分析

高效的.Net UDP異步編程實現分析

2019-10-11 11:03asp.net教程網 ASP.NET教程

重點是怎么建立一種高效的UDP機制來實時接收服務器發送過來的數據包.本文將介紹.Net UDP異步編程如何實現解決方案,有需求的朋友可以參考下

因為要寫一個網絡程序要用到UDP協議,UDP這東西比較麻煩,又不像TCP一樣提供可靠的連接,發送接收的超時實在不好設計,最后只要用Timer來檢測有沒有想要的數據包-_#,不過這不是這次的重點,重點是怎么建立一種高效的UDP機制來實時接收服務器發送過來的數據包. 

CodeProject上有個例子是開個線程去同步接收,這樣倒是可以滿足我的程序需求,不過實際中遇到幾個問題: 
1.程序開銷大,內存狂飆,接一次數據就要重新開一次線程 
2.由于主界面和底層是完全隔離只是通過中間的接口來通訊,導致線程總是不能正常的結束,程序結束后還有一個進程在那里不知道干什么. 
于是翻閱MSDN,查找自己以前寫的代碼,最后還是決定用異步來接收,MSDN上UDP異步的例子不太好,有點敷衍的意思,用異步很好的解決了以上的問題,高效完成效率,代碼如下: 

復制代碼代碼如下:


UdpClient qq_client; //Udp客戶端 
qq_client = new UdpClient(); 
IPEndPoint remoteQQEP = new IPEndPoint(remotehost, remoteport); 
qq_client.Connect(remoteQQEP); 
AsyncCallback GetRecvBuffer = new AsyncCallback(ReceiveCallback); 
qq_client.BeginReceive(GetRecvBuffer, null); 
這里用一個GetRecvBuffer的回掉來實現異步 
private void ReceiveCallback(IAsyncResult ar) 

try 

lock (this) 

byte[] recvbytes = qq_client.EndReceive(ar, ref remoteQQEP); 
//QQFunction.DebugDump(recvbytes); 
if (recvbytes[0] != QQDef.QQ_IM_HEAD && recvbytes[0] != 0x03) 

//非QQ數據包 
return; 

switch (Pop16(recvbytes, 3)) 

case QQDef.QQ_REQUEST_TOKEN: 
DoGetToken(recvbytes); 
break; 
case QQDef.QQ_REQUEST_LOGIN: 
DoGetLogin(recvbytes); 
break; 
case QQDef.QQ_GET_ONLINE_FRIEND: 
DoGetOnline(recvbytes); 
break; 
case QQDef.QQ_KEEP_ALIVE: 
CheckAlive(recvbytes); 
break; 
case QQDef.QQ_SEND_IM_MSG: 
// Do SomeThing 
break; 
case QQDef.QQ_RECV_IM_MSG: 
DoRecvMsg(recvbytes); 
break; 
default: 
QQFunction.DebugDump("UnKnow Command"); 
QQFunction.DebugDump(recvbytes); 
break; 


lock (this) 

AsyncCallback GetRecvBuffer = new AsyncCallback(ReceiveCallback); 
qq_client.BeginReceive(GetRecvBuffer, null); 


catch 



代碼是不是很簡單?功能是不是很強大?

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 人生路不在线观看完整版 | 美味情缘韩国在线观看视频 | 久久机热视频 这里只有精品首页 | 手机在线伦理片 | 精品一区二区三区在线播放 | 521色香蕉网在线观看免费 | 色婷婷久久综合中文久久一本 | 午夜久久免影院欧洲 | 欧美日韩国产精品自在自线 | 日本黄大片影院一区二区 | 99热er | 国产馆精品推荐在线观看 | 暖暖免费观看高清在线 | 亚洲小视频 | 特黄特色一级aa毛片免费观看 | 国产东北三老头伦一肥婆 | 五月天导航 | 亚洲国产日韩欧美一区二区三区 | 精品免费视频 | 国产欧美日韩综合 | 成熟女人50岁一级毛片不卡 | 二次元美女脱裤子让男人桶爽 | 久久精品中文闷骚内射 | 亚洲欧美日韩天堂在线观看 | 女子监狱第二季未删减在线看 | 娇妻与公陈峰姚瑶小说在线阅读 | av在线亚洲男人的天堂 | 视频一区国产精戏刘婷 | 拔插拔插.com | 午夜深情在线观看免费 | 果冻传媒天美传媒乌鸦传媒 | 成人亚洲欧美日韩在线观看 | 国产情侣露脸自拍 | 成人精品在线 | 水蜜臀| 91高清在线视频 | 911亚洲精品国内自产 | 天使萌痴汉在线中文字幕 | 天天射久久 | 免费一级国产大片 | 深夜福利影院 |