基于c#的socket編程的tcp異步實現(xiàn)

基于c#的socket編程的tcp異步實現(xiàn)

ID:16886786

大?。?5.20 KB

頁數(shù):17頁

時間:2018-08-25

基于c#的socket編程的tcp異步實現(xiàn)_第1頁
基于c#的socket編程的tcp異步實現(xiàn)_第2頁
基于c#的socket編程的tcp異步實現(xiàn)_第3頁
基于c#的socket編程的tcp異步實現(xiàn)_第4頁
基于c#的socket編程的tcp異步實現(xiàn)_第5頁
資源描述:

《基于c#的socket編程的tcp異步實現(xiàn)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、基于C#的socket編程的TCP異步實現(xiàn)一、摘要  本篇博文闡述基于TCP通信協(xié)議的異步實現(xiàn)。?二、實驗平臺  VisualStudio2010?三、異步通信實現(xiàn)原理及常用方法3.1建立連接   在同步模式中,在服務(wù)器上使用Accept方法接入連接請求,而在客戶端則使用Connect方法來連接服務(wù)器。相對地,在異步模式下,服務(wù)器可以使用BeginAccept方法和EndAccept方法來完成連接到客戶端的任務(wù),在客戶端則通過BeginConnect方法和EndConnect方法來實現(xiàn)與服務(wù)器的連

2、接。  BeginAccept在異步方式下傳入的連接嘗試,它允許其他動作而不必等待連接建立才繼續(xù)執(zhí)行后面程序。在調(diào)用BeginAccept之前,必須使用Listen方法來偵聽是否有連接請求,BeginAccept的函數(shù)原型為:BeginAccept(AsyncCallbackAsyncCallback,Ojbectstate)參數(shù):AsyncCallBack:代表回調(diào)函數(shù)state:表示狀態(tài)信息,必須保證state中包含socket的句柄  使用BeginAccept的基本流程是:(1)創(chuàng)建本地終

3、節(jié)點,并新建套接字與本地終節(jié)點進行綁定;(2)在端口上偵聽是否有新的連接請求;(3)請求開始接入新的連接,傳入Socket的實例或者StateOjbect的實例?! ⒖即a://定義IP地址IPAddresslocal=IPAddress.Parse("127.0,0,1");IPEndPointiep=newIPEndPoint(local,13000);//創(chuàng)建服務(wù)器的socket對象Socketserver=newSocket(AddressFamily.InterNetwork,Sock

4、etType.Stream,ProtocolType.Tcp);server.Bind(iep);server.Listen(20);server.BeginAccecpt(newAsyncCallback(Accept),server);otherstaffoftheCentre.Duringthewar,ZhuwastransferredbacktoJiangxi,andDirectorofthenewOfficeinJingdezhen,JiangxiCommitteeSecretary.S

5、tartingin1939servedasrecorderoftheWestNorthOrganization,SecretaryoftheSpecialCommitteeAfterthevictoryofthelongMarch,hehasbeentheNorthwestOfficeoftheFederationofStateenterprisesMinister,ShenmufuguSARmissions,DirectorofNingxiaCountypartyCommitteeSecreta

6、ryandrecorderoftheCountypartyCommitteeSecretary,Ministersand  當BeginAccept()方法調(diào)用結(jié)束后,一旦新的連接發(fā)生,將調(diào)用回調(diào)函數(shù),而該回調(diào)函數(shù)必須包括用來結(jié)束接入連接操作的EndAccept()方法。該方法參數(shù)列表為SocketEndAccept(IAsyncResultiar)下面為回調(diào)函數(shù)的實例:voidAccept(IAsyncResultiar){//還原傳入的原始套接字SocketMyServer=(Socket)i

7、ar.AsyncState;//在原始套接字上調(diào)用EndAccept方法,返回新的套接字Socketservice=MyServer.EndAccept(iar);}  至此,服務(wù)器端已經(jīng)準備好了??蛻舳藨ㄟ^BeginConnect方法和EndConnect來遠程連接主機。在調(diào)用BeginConnect方法時必須注冊相應的回調(diào)函數(shù)并且至少傳遞一個Socket的實例給state參數(shù),以保證EndConnect方法中能使用原始的套接字。下面是一段是BeginConnect的調(diào)用:Socketsock

8、et=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp)IPAddressip=IPAddress.Parse("127.0.0.1");IPEndPointiep=newIPEndPoint(ip,13000);socket.BeginConnect(iep,newAsyncCallback(Connect),socket);  EndConnect是一種阻塞方法,用于完成BeginCo

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。