歡迎您的來訪!有源碼,好建站(www.bmm520.net)源碼海洋為您提供快速建站平臺(tái).

      537-C#編寫的基于TCP通信的IMV3源碼

      537-C#編寫的基于TCP通信的IMV3源碼
      • 源碼類型:國產(chǎn)軟件
      • 授權(quán)方式:商業(yè)源碼
      • 源碼大小:16.2 MB
      • 需要金幣:50 金幣
      • 運(yùn)行環(huán)境:Win2003,WinXP,Win2000,Win9X
      • 源碼等級(jí):★★★☆☆
      • 發(fā)布時(shí)間:2019-05-12
      • 下載次數(shù):
      • 金幣說明:5元5|10元10|30元100|100元1000|更多
      • 在線沖值:點(diǎn)擊在線沖值
      • 源碼標(biāo)簽:
      • 查看或解壓密碼:
      • 網(wǎng)盤提取密碼:
      源碼介紹
      537-C#編寫的基于TCP通信的IMV3源碼
      我們知道在網(wǎng)絡(luò)通信中,如果所有的通信都通過服務(wù)器轉(zhuǎn)發(fā),會(huì)增加服務(wù)器的負(fù)擔(dān),如果實(shí)現(xiàn)了P2P,客戶端之間直接通訊,比如聊天或者傳送文件時(shí)不再通過服務(wù)器,而是客戶端之間直接通信,將會(huì)有效的減輕服務(wù)器的負(fù)擔(dān),提高程序的效率。
      本節(jié)相關(guān)的P2P,指的是通過TCP協(xié)議,在局域網(wǎng)中實(shí)現(xiàn)的P2P,廣域網(wǎng)中的P2P暫時(shí)沒有涉及。
      本Demo基于來自英國的networkComms2.3.1開源通信框架
      工作原理-通過服務(wù)器,在客戶端之間建立P2P通道,之后客戶端之間的通訊可以脫離服務(wù)器
      流程如下:
      NetworkComms通信框架的內(nèi)在通信機(jī)制,使得我們實(shí)現(xiàn)P2P通信非常的簡單。
      (1):服務(wù)器開始監(jiān)聽
      (2)  :客戶端,開始連接服務(wù)器,然后也開始監(jiān)聽工作,其實(shí)成為一個(gè)服務(wù)器。連接的過程中,系統(tǒng)會(huì)給客戶端隨機(jī)分派一個(gè)端口,以便完成與服務(wù)器的通信。連接完成后,我們獲取到客戶端的IP和與服務(wù)器通信的端口,客戶端在此端口上展開監(jiān)聽,也就是說每個(gè)客戶端都會(huì)展開監(jiān)聽,具備作為服務(wù)器的所有特質(zhì)。
         模擬代碼:      
                ConnectionInfo connInfo = new ConnectionInfo("服務(wù)器IP", "服務(wù)器端口");
                //客戶端與服務(wù)器進(jìn)行連接
                Connection     newTcpConnection = TCPConnection.GetConnection(connInfo);
                //客戶端與服務(wù)器連接成功后,開始監(jiān)聽本地端口,客戶端也稱為可以監(jiān)聽的服務(wù)器
                TCPConnection.StartListening(connInfo.LocalEndPoint);
      (3):每個(gè)客戶端需要維護(hù)一個(gè)“P2P通信的連接”表
         我們用一個(gè)靜態(tài)類來實(shí)現(xiàn),具體可查看Common類
      //字典中存儲(chǔ) 用戶ID 和相應(yīng)的連接引用
      public static Dictionary UserConnList = new Dictionary();

      相關(guān)操作方法
      (4):客戶端成功登陸后,從服務(wù)器獲取所有在線其他客戶端用戶的本地端點(diǎn)(IP和端口)(即在其他客戶端在步驟一中展開監(jiān)聽的端點(diǎn)),并進(jìn)行連接
          《1》客戶端甲與其他客戶端逐個(gè)進(jìn)行連接,連接成功后,客戶端甲添加對(duì)方用戶ID和連接引用到本地P2P通道字典中
         《2》客戶端甲發(fā)送一個(gè)消息類型為”setupP2PMessage"的消息,給對(duì)方,以便于對(duì)方添加相應(yīng)的記錄到對(duì)方的P2P字典中
         《3》客戶端甲與其他用戶進(jìn)行連接時(shí),客戶端甲為“客戶端”,其他的客戶端為“服務(wù)器端”,所以在P2P通道的2端,總有一端為“客戶端”,另一端為“服務(wù)器”。
                配合NetworkComms通信框架,此種概念上的區(qū)分,并不影響P2P通道的通信。
               客戶端甲與其他客戶端通信時(shí),無論是作為”客戶端“或者”服務(wù)器“均可,只要與對(duì)方存在TCP長連接即可。
           《4》 這種由客戶端之間彼此通信而建成的”服務(wù)器“,具備真正服務(wù)器的所有功能,會(huì)進(jìn)行相應(yīng)的”心跳檢測“與”連接“維護(hù)等。
            下面的代碼:某客戶端登陸后,獲取所有已在線用戶,并與之連接,連接完成后,發(fā)送”SetupP2PMessag"類型消息給對(duì)方。通過此過程,彼此雙方的“P2P連接”都會(huì)建立完成。

      上面的代碼中,我們把相關(guān)的P2P通道建立消息寫入程序文件夾下“P2PINFO.txt文件”,以便于觀察P2P消息通道的建立。和通過P2P通道發(fā)送消息
      (5):通過P2P通道發(fā)送消息
         客戶端發(fā)送消息時(shí),查看是否與對(duì)方存在 P2P通道,如果存在通過P2P連接發(fā)送消息,否則通過服務(wù)器發(fā)送
        舉例說明,發(fā)送聊天消息時(shí),先查看是否有 p2p 通道
      (6)P2P通道的注銷
         當(dāng)某個(gè)客戶端掉線后,我們要把其從其他相應(yīng)客戶端的P2P通道注銷掉。
         方法:服務(wù)器通過心跳檢測,知道某連接掉線后,發(fā)送消息給其他所有客戶端。
      537-C#編寫的基于TCP通信的IMV3源碼

       

      本源碼地址:http://www.bmm520.net/vip/net/2019/0512/19165.html
      下載地址
      相關(guān)源碼

      推薦源碼

      亚洲午夜无码久久久久软件 | 亚洲中文字幕乱码一区| 久久亚洲精品视频| 亚洲线精品一区二区三区| 亚洲色图综合在线| 国产精品亚洲精品日韩已方 | 在线观看亚洲免费视频| 在线看亚洲十八禁网站| 国产成人人综合亚洲欧美丁香花 | 亚洲国产二区三区久久| 亚洲免费在线视频| 中文字幕亚洲免费无线观看日本| 亚洲综合自拍成人| 亚洲精品在线播放视频| 亚洲无成人网77777| 亚洲女人影院想要爱| 亚洲激情视频图片| 亚洲午夜福利在线视频| 亚洲av无码无线在线观看| 国产91成人精品亚洲精品| 亚洲国产成人久久综合区| 国产啪亚洲国产精品无码 | 亚洲综合最新无码专区| 亚洲色无码一区二区三区| 久久久亚洲精品无码| 亚洲视频网站在线观看| 日本亚洲精品色婷婷在线影院| 香蕉大伊亚洲人在线观看| 亚洲爆乳少妇无码激情| 亚洲国产精品激情在线观看 | 中日韩亚洲人成无码网站| 亚洲av永久无码精品网址| 亚洲成?Ⅴ人在线观看无码| 国产亚洲欧洲Aⅴ综合一区| 亚洲av无码乱码国产精品fc2| 亚洲国产精品自在在线观看| 亚洲成A∨人片在线观看无码| 亚洲中文字幕无码久久2020| 国产精品亚洲专区无码不卡| 成人午夜亚洲精品无码网站| 亚洲国产老鸭窝一区二区三区|