美章網 資料文庫 P2P在線通信系統的實現范文

P2P在線通信系統的實現范文

本站小編為你精心準備了P2P在線通信系統的實現參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。

P2P在線通信系統的實現

基于局域網的即時通信工具,實際上是互聯網即時通信工具的一個小規模版,廣域網上的即時通信工具,如今一般采用UDP或者TCP協議體系來實現,開發技術已經比較成熟,比如較早的MSN即時通信軟件,還有國產的有名的QQ,網易泡泡這些工具統統都實現了廣域網上的即時通信,盡管都實現了即時通信以及文件傳輸的主要功能,但是也各有各的特色,MSN的個性化表情,網易泡泡的易操作性等。而QQ也具有一個相當方便的屏幕截圖功能,另外就是,所有上述軟件都實現了網絡即時視頻,語音聊天功能。這些軟件在使用方面各有特色,在實現方面也各有所長,但由于這些產品正在商業運營階段,其實現方式屬于商業機密,具體細節不可能得知,但是它在大的方面無非就是各種利用各種平臺上的網絡通信接口,建構基于下層TCP/IP,或者UDP/IP協議的軟件產品。在局域網內,這些功能的實現跟廣域網相比更加簡單,因為局域網的網絡結構本身比廣域網要復雜,但是又可借此理解網絡協議以及網絡通信工具的實現原理,所以仍然極具研究價值。本文將討論一種基于Socket的局域網通信工具的設計與實現方法,它具有信息收發速度快,保密性好,占用網絡帶寬資源低,占用服務器吞吐能力低,易于編程實現等優點。

1功能設計

該在線通信系統采用C/S架構,在此架構中,服務器端與客戶端是相互依賴的。客戶端啟用以后,需要查看服務器端是否在線,服務器在線才能正常使用客戶端,如果服務器不在線,則在檢測一定次數后自動退出客戶端程序。在使用過程中,如果客戶端在指定時間內未向服務器端發送信息,服務器認為客戶端下線;客戶端在一定時間內未收到服務器端信息,認為服務器已經下線,則提示用戶并建議退出,用戶在一定時間后沒有退出則自動關閉客戶端程序。客戶端是直接連接到擁有靜態IP的服務器上的,此在線通信系統沒有提供掃描功能所以需要指定服務器地址和昵稱,客戶端實現功能簡單,僅能在客戶端之間相互發送消息。

2基于Socket的C/S結構設計

MFC提供了兩個套接字類,在不同的層次上對WindowsSocketAPI函數進行了封裝,為編寫WindowsSocket網絡通信程序提供了兩種編程模式。CAsyncSocket類,在低層次上對WindowsSocketAPI進行封裝,其成員函數和WindowsSocketAPI的函數調用直接對應。必須自己處理阻塞問題、字節順序問題和字符串轉換問題。CSocket類,從CAsyncSocket類派生來的,是對WindowsSocketAPI的高級封裝。(1)CSocket類結合archive類來使用套接字,就像MFC的序列化協議一樣。(2)CSocket類管理了通信的許多方面,如字節順序問題和字符串轉換問題。(3)CSocket類為Windows消息的后臺處理提供了阻塞的工作模式,這是Carchive同步操作所必需的。下面是使用CSocket對象進行客戶和服務器之間通信的一般編程模型,它只適用于數據流套接字。(1)分別構造服務器和客戶端套接字對象。(2)調用對象的Create函數創建套接字,而Create函數會調用Bind函數將此套接字綁定到指定的地址。需要注意的是為服務器創建套接字是需要為其指定端口號。(3)套接字創建完畢后,服務器調用Listen成員函數開始偵聽客戶的連接請求,而客戶可以調用Connect成員函數向服務器請求連接。(4)當服務器監聽到客戶連接請求時,創建一個新的套接字,并將其傳送給Accept成員以進行數據的發送和接收。(5)為服務器和客戶端的套接字對象分別創建一個與之相聯系的CSocketFile對象。(6)為服務器和客戶端的套接字對象分別創建一個與CSocket-File相聯系的CArchive對象以進行數據的發送和接收。(7)使用CArchive對象在客戶端和服務器套接字之間傳送數據。(8)在任務完成后,銷毀CArchive、CSocketFile和CSocket對象。

3功能實現

用戶通信前必須安裝到本地計算機,通過正確設置后就可以進行實時p2p通信。客戶端的實現主要分為登錄模塊、在線用戶顯示模塊、通信模塊、監聽模塊、請求模塊五部分。在登錄模塊用戶通過設置服務器端IP地址和用戶昵稱就可以連接上服務器,在昵稱部分不能用字符‘|’‘、?’。當用戶成功連接服務器登錄后,客戶端就由登錄模塊進入在線用戶顯示模塊,這個模塊能顯示同一網段內在線的用戶并能定時刷新在線用戶列表。用戶通過雙擊(除了用戶自己外)在線用戶就可以與其進行實時通信。在線用戶的基本信息。服務器端由三部分組成:監聽應答模塊、請求模塊、窗口管理模塊。窗口管理模塊主要以可視化的形式反映出基本的服務器及用戶信息。左側最新信息部分記錄著服務器的狀態,右側在線用戶部分記錄著在線用戶的昵稱、IP地址,服務器能定時的刷新在線的用戶。監聽應答模塊主要負責監聽客戶端發送來的連接請求并給與處理,監聽模塊主要使用OnAccept()函數調用Ac-cept()函數通知監聽的socket應答待連接的客戶端請求。如果客戶端連接成功則服務器把這個用戶加入到在線用戶列表。請求模塊主要負責告知服務器已創建的socket客戶端發送的數據緩存在buffer中,通過調用Receive()函數讀取buffer中的數據。請求模塊還可以告知服務器已創建的socket和客戶端的連接已斷開,然后服務器用戶信息列表部分定時刷新顯示在線的用戶。

4運行結果

用三臺機器通過交換機構成一個局域網,進行正確的網絡配置,三臺機器上都安裝了WINDOWS操作系統,一臺安裝服務器程序,另外兩臺安裝客戶端程序。在使用通信系統前必須啟動服務器,如果服務器未啟動或意外關閉客戶端將無法登錄。(1)雙擊服務器程序圖標運行服務器,將會彈出對話框。(2)單擊啟動服務器按鈕,啟動服務器。服務器程序運行后,可以在本地運行客戶單程序。(1)雙擊客戶端應用程序圖標,啟動客戶端,進入登錄界面。(2)在登錄界面填寫服務器IP和用戶昵稱,確定后連接上服務器進入在線用戶列表窗口。(3)在在線用戶列表窗口雙擊想要與之通信的對象,打開了通信窗口,之后即可進行通信。

作者:朱浩悅 張軍軍 周楠 徐陽 單位:西安文理學院信息工程學院

主站蜘蛛池模板: 青柠直播视频在线观看网| a级毛片高清免费视频在线播放| 欧美人与动人物姣配xxxx | 亚洲日韩亚洲另类激情文学| 精品免费国产一区二区三区 | 丁香色欲久久久久久综合网| 日韩中文字幕免费在线观看| 亚洲国产成人精品女人久久久| 特黄一级**毛片| 动漫美女被爆羞羞免费| 菠萝菠萝蜜在线免费视频| 国产成人麻豆亚洲综合无码精品| 57pao国产成视频免费播放| 大学生初次破苞免费视频| 一级特黄录像在线观看| 无码精品久久久久久人妻中字| 九九在线中文字幕无码| 欧美大片在线观看完整版| 亚洲白色白色在线播放| 男人的天堂免费a级毛片无码| 午夜国产福利在线观看| 色综合色天天久久婷婷基地| 国产女人18毛片水真多18精品| 日本高清视频色wwwwww色| 国产精品国产亚洲精品看不卡| 97在线视频免费| 在线观看国产一区二区三区| www.黄在线| 性做久久久久久免费观看| 中文字幕日韩欧美一区二区三区| 日本漫画大全无翼无彩全番| 久久综合丝袜日本网| 最近2018中文字幕2019高清| 亚洲中文字幕久久精品无码喷水| 欧美成人精品三级网站| 亚洲精品一二区| 狠狠躁天天躁中文字幕无码| 免费午夜扒丝袜www在线看 | 久久久久久久人妻无码中文字幕爆| 毛片免费观看的视频在线| 人人澡人人透人人爽|