基于Socket接口的Linux與Windows網絡聊天室設計與實現_第1頁
基于Socket接口的Linux與Windows網絡聊天室設計與實現_第2頁
基于Socket接口的Linux與Windows網絡聊天室設計與實現_第3頁
基于Socket接口的Linux與Windows網絡聊天室設計與實現_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于Socket接口的Linux與Windows網絡聊天室設計與實現摘要:為了實現Linux與Windows跨平臺通信,及時共享信息,構建了一個適用于跨平臺的網絡聊天室通信程序。先搭建跨平臺通信環(huán)境,然后使用Socket套接字網絡編程接口實現通信。整個系統(tǒng)采用客戶機/效勞器C/S模型,Windows客戶端采用MFC框架編寫,Linux效勞器和客戶端均采用C語言實現。通過測試,Linux和Windows的客戶端可以成功連接到效勞器,從而實現跨平臺網絡聊天功能。關鍵詞:Linux;Windows;套接字;客戶機/效勞器中圖分類號:TP3190 引言Linux是一個基于POSIX和UNIX的多任務、

2、多用戶、支持多線程的操作系統(tǒng)。Linux在眾多方面表現出強大的優(yōu)勢,通常用在控制領域以進步系統(tǒng)性能。然而,目前使用最多的Windows操作系統(tǒng)圖形界面友好,擁有良好的集成開發(fā)環(huán)境,操作簡單,深受廣闊用戶的喜歡。兩種操作系統(tǒng)各有千秋,越來越多場合同時使用,這就出現了跨平臺的通信問題。對此,本文通過Socket套接口來實現不同操作系統(tǒng)之間的實時聊天,運用C/S形式設計出Windows與Linux操作系統(tǒng)間可以互相通信的網絡聊天室,本客戶端可以顯示其它客戶端的消息,實現了信息的及時共享。1 Socket編程原理與過程1.1 Socket編程原理Socket編程過程分為客戶端和效勞器端編程,大致通信過

3、程如圖1所示。Socket編程過程首先需要創(chuàng)立套接字socket,然后效勞器端綁定套接字bind,即將本地主機IP地址、端口號與創(chuàng)立的套接字綁定。綁定完成后進入監(jiān)聽狀態(tài)listen,等待客戶端連接??蛻舳思僭O發(fā)起連接connect,效勞器和客戶端的底層就進展三次握手承受連接accept。連接成功后,雙方就可以收發(fā)數據了。在此連接上使用send函數發(fā)送數據,在連接的另一端使用rev函數接收數據,這樣,Socket就連接了兩端的應用程序。套接字機制提供了一系列的系統(tǒng)調用函數,通過這些函數調用,應用程序就可以在掩蓋通信協(xié)議細節(jié)的情況下實現網絡傳輸。2 通信環(huán)境搭建3 跨平臺通信設計3.1 Linux

4、平臺效勞器設計通過此函數把消息發(fā)送給每個連接的客戶端;效勞端程序父子進程分別負責發(fā)送和接收數據,以防止數據沖撞;本程序效勞端端口號設定為:3490,端口綁定函數int bindPortunsigned short int port ,此函數用來創(chuàng)立socketAF_INET,SOCK_STREAM,0流套接字,并綁定到指定的端口,在Linux操作系統(tǒng)下不需要初始化。當有客戶端懇求連接時,acceptsockfd,struct sockaddr*their_addr,sin_size用來承受客戶端連接。連接成功后,效勞器創(chuàng)立子進程,子進程ppid = fork。父進程負責接收數據,子進程負責發(fā)送

5、數據,把接收到的數據轉發(fā)給已連接的客戶端。3.2 客戶端設計因為此程序為聊天室,所以客戶端設計分為Windows平臺和Linux平臺。3.2.1 Windows平臺客戶端設計懇求連接:新建socket、ServerIP和Port分別表示效勞器IP地址和端口號,通過函數ConnectServerIP,Port連接到Linux效勞器端,成功以后即可收發(fā)數據。 發(fā)送與接收消息:定義發(fā)送的字符串為Message,將消息輸入框textBox1中的內容指定為Message,通過send函數進展消息發(fā)送。新建一個byte數組byte RecvBuffer,通過RecvRecvBuffer函數將接收到的消息存

6、放到RecvBuffer中,接收成功后,將內容顯示到顯示框。3.2.2 Linux平臺客戶端設計Linux平臺客戶端使用C語言編寫。首先創(chuàng)立客戶端套接字clientfd = socketAF_INET,SOCK_STREAM,0,第二個參數說明為流式套接字,即面向連接;然后懇求連接效勞器端,通過connectclientfd,struct sockaddr *clientaddr,sizeofstruct sockaddr這個函數懇求。連接成功后,創(chuàng)立子進程pid = fork,父進程用于發(fā)送信息,子進程用于接收信息。4 運行結果分析4.1 啟動Linux效勞器端4.2 啟動Windows客戶

7、端翻開Visual C+編譯、連接成功后,出現登錄窗體,輸入姓名、效勞器IP地址和端口號,點擊連接,和Linux端進展連接。此時用兩個客戶端進展測試。和效勞器端連接成功后,Windows客戶端和Linux客戶端可以組建一個聊天室收發(fā)消息。以Windows其中的一個客戶端為例,在消息輸入框中輸入消息,點擊發(fā)送,Linux效勞器端接收到消息,然后轉發(fā)給其它客戶端,3個客戶端分別發(fā)送完消息后,Windows其中一個客戶端顯示內容如圖3所示。4.3 啟動Linux客戶端在Linux系統(tǒng)下執(zhí)行完上述命令后,客戶端就和效勞器連接了, Linux客戶端可以一邊發(fā)送消息,一邊接收效勞器發(fā)來的消息,Linux客戶端顯示如圖4所示。5 結語本文研究了Linux與Windows之間的通信問題。雙方采用TCP/IP協(xié)議,運用socket接口來開發(fā)網絡通信程序。本程序實現了網絡聊天室功能,效勞器能向

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論