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

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

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 



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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产手机在线观看 | 亚偷熟乱区视频在线观看 | 丝瓜视频黄色在线观看 | 欧美另类变态 | 久久人妻无码毛片A片麻豆 久久热这里只有 精品 | 能免费观看的韩剧 | 性色生活片在线观看 | 黑人粗长大战亚洲女 | a天堂视频 | 欧美国产精品久久 | 91精品国产高清久久久久久91 | 免费视频一级片 | 亚洲精品一区二区三区在线播放 | 亚洲乱亚洲23p女 | 青青青在线观看国产精品 | 激情三级做爰在线观看激情 | 色综合伊人色综合网站中国 | 久久国产视频网 | 高h视频免费观看 | 免费观看视频在线 | 2020韩国r级理论片在线观看 | 成人久久伊人精品伊人 | juliaann丝袜精品系列 | 免费a视频在线观看 | 日韩天堂视频 | 日b视频免费 | 国产裸露片段精华合集链接 | 视频高清在线观看 | 99视频精品国在线视频艾草 | 亚洲va精品中文字幕 | 奇米影视4444 | china中国小帅gayxnxx | 91免费高清视频 | 天美影视文化传媒mv免费 | 啊哈~嗯哼~用力cao我小说 | 国产v在线播放 | 乌克兰少妇大胆大BBW | 日本午夜色 | 羞羞影院午夜男女爽爽影院网站 | 精品国内自产拍在线视频 | 亚洲丁香网 |