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

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

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

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

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

       

      本源碼地址:http://m.bmm520.net/vip/net/2019/0512/19165.html
      下載地址
      相關源碼

      推薦源碼

      亚洲欧洲国产日韩精品| 亚洲AV无码一区二区三区牲色 | 亚洲精品人成无码中文毛片| 亚洲成在人线中文字幕| 亚洲av无码成h人动漫无遮挡 | 亚洲综合无码精品一区二区三区| 亚洲av中文无码| 午夜在线亚洲男人午在线| 亚洲AV无码片一区二区三区 | 亚洲熟女乱色一区二区三区| 亚洲人成电影网站久久| 日韩亚洲人成在线| 亚洲熟伦熟女专区hd高清| 亚洲人成网站999久久久综合| 亚洲精品无码av片| 亚洲av成人中文无码专区| 久久亚洲AV成人无码国产电影| 亚洲日韩在线中文字幕综合| 日韩精品成人亚洲专区| 亚洲欧洲中文日韩久久AV乱码| 国产L精品国产亚洲区久久| 一本久久a久久精品亚洲| 日韩va亚洲va欧洲va国产| 亚洲成年人在线观看| 亚洲精品电影在线| 亚洲youjizz| 亚洲欧美日韩中文字幕一区二区三区| 亚洲第一综合天堂另类专 | 亚洲国产精品免费视频| 亚洲成a人片在线观看中文app | 亚洲av无码片区一区二区三区| 亚洲国产成人99精品激情在线| 亚洲色大成WWW亚洲女子| 爱情岛论坛亚洲品质自拍视频网站 | 在线观看亚洲AV日韩A∨| 亚洲av永久无码精品网址| 亚洲精品国产综合久久一线| 亚洲日韩精品一区二区三区无码 | 亚洲国产成人精品无码区在线观看 | 亚洲av无码国产精品色在线看不卡 | 亚洲色大18成人网站WWW在线播放|