激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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区| 国产亚洲精品久久久久婷婷瑜伽 | 久久久人成影片一区二区三区 | 九一看片.| 91成人天堂久久成人 | 91a在线观看 | 欧美日韩夜夜 | 国产伦久视频免费观看视频 | 久久久久久久久成人 | 成人毛片免费 | 亚洲国产精品500在线观看 | 激情五月少妇a | 草草在线观看 | 69性欧美高清影院 | 国产激爽大片在线播放 | 国产88久久久国产精品免费二区 | 国产亚洲欧美日韩高清 | 999精品久久久 | 国产精品免费小视频 | 欧美一级毛片特黄黄 | 亚洲午夜久久久精品一区二区三区 | 欧美成人理论片乱 | 国产亚洲欧美视频 | 国产精品视频一区二区三区四 | 国产羞羞视频 | 91av久久 | 久久精品美乳 | 91小视频在线观看免费版高清 | 欧美在线观看视频一区 | 巨乳毛片| 伊人一二三四区 | 一本一本久久a久久精品综合小说 | 国产免费高清 | 国产精品欧美久久久久一区二区 | a网站在线| 中国久久久 | 中文国产在线视频 | 天天鲁在线视频免费观看 |