亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Socket接口的Linux與Windows網(wǎng)絡(luò)聊天室設(shè)計(jì)與實(shí)現(xiàn)

        2015-06-24 06:20:41陳潔孟曉景
        軟件導(dǎo)刊 2015年6期
        關(guān)鍵詞:客戶(hù)機(jī)服務(wù)器

        陳潔 孟曉景

        摘要:為了實(shí)現(xiàn)Linux與Windows跨平臺(tái)通信,及時(shí)共享信息,構(gòu)建了一個(gè)適用于跨平臺(tái)的網(wǎng)絡(luò)聊天室通信程序。先搭建跨平臺(tái)通信環(huán)境,然后使用Socket套接字網(wǎng)絡(luò)編程接口實(shí)現(xiàn)通信。整個(gè)系統(tǒng)采用客戶(hù)機(jī)/服務(wù)器(C/S)模型,Windows客戶(hù)端采用MFC框架編寫(xiě),Linux服務(wù)器和客戶(hù)端均采用C語(yǔ)言實(shí)現(xiàn)。通過(guò)測(cè)試,Linux和Windows的客戶(hù)端可以成功連接到服務(wù)器,從而實(shí)現(xiàn)跨平臺(tái)網(wǎng)絡(luò)聊天功能。

        關(guān)鍵詞:Linux;Windows;套接字;客戶(hù)機(jī)/服務(wù)器

        DOIDOI:10.11907/rjdk.151230

        中圖分類(lèi)號(hào):TP319

        文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):16727800(2015)006009403

        作者簡(jiǎn)介作者簡(jiǎn)介:陳潔(1990-),女,山東菏澤人, 山東科技大學(xué)信息科學(xué)與工程學(xué)院碩士研究生,研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò)應(yīng)用技術(shù);孟曉景(1962-),男,浙江紹興人, 山東科技大學(xué)信息科學(xué)與工程學(xué)院教授,研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò)。

        0 引言

        Linux是一個(gè)基于POSIX和UNIX的多任務(wù)、多用戶(hù)、支持多線程的操作系統(tǒng)。Linux在眾多方面表現(xiàn)出強(qiáng)大的優(yōu)勢(shì),通常用在控制領(lǐng)域以提高系統(tǒng)性能。然而,目前使用最多的Windows操作系統(tǒng)圖形界面友好,擁有良好的集成開(kāi)發(fā)環(huán)境,操作簡(jiǎn)單,深受廣大用戶(hù)的喜愛(ài)。兩種操作系統(tǒng)各有千秋,越來(lái)越多場(chǎng)合同時(shí)使用,這就出現(xiàn)了跨平臺(tái)的通信問(wèn)題。對(duì)此,本文通過(guò)Socket套接口來(lái)實(shí)現(xiàn)不同操作系統(tǒng)之間的實(shí)時(shí)聊天,運(yùn)用C/S模式設(shè)計(jì)出Windows與Linux操作系統(tǒng)間可以互相通信的網(wǎng)絡(luò)聊天室,本客戶(hù)端可以顯示其它客戶(hù)端的消息,實(shí)現(xiàn)了信息的及時(shí)共享。

        1 Socket編程原理與過(guò)程

        1.1 Socket編程原理

        Socket[1]作為BSD UNIX的進(jìn)程通信機(jī)制,通常也稱(chēng)作“套接字”,用于描述IP地址和端口,是網(wǎng)絡(luò)通信的基本單元。基于TCP/IP協(xié)議的 Socket 編程是一種典型的會(huì)話編程方式,它既適用于客戶(hù)/服務(wù)器通信方式,又適用于點(diǎn)對(duì)點(diǎn)通信方式。套接字通過(guò)調(diào)用系統(tǒng)提供的庫(kù)函數(shù)實(shí)現(xiàn)數(shù)據(jù)傳輸,不需要過(guò)多了解底層的一些細(xì)節(jié)。本文采用C/S[2]通信方式編程。通信服務(wù)方式分為面向連接和無(wú)連接,這里使用的是面向連接的流套接字。

        1.2 Socket編程過(guò)程

        Socket編程過(guò)程分為客戶(hù)端和服務(wù)器端編程,大致通信過(guò)程如圖1所示。

        Socket編程過(guò)程首先需要?jiǎng)?chuàng)建套接字socket(),然后服務(wù)器端綁定套接字bind(),即將本地主機(jī)IP地址、端口號(hào)與創(chuàng)建的套接字綁定。綁定完成后進(jìn)入監(jiān)聽(tīng)狀態(tài)listen(),等待客戶(hù)端連接??蛻?hù)端如果發(fā)起連接connect(),服務(wù)器和客戶(hù)端的底層就進(jìn)行三次握手接受連接accept()。連接成功后,雙方就可以收發(fā)數(shù)據(jù)了。在此連接上使用send()函數(shù)發(fā)送數(shù)據(jù),在連接的另一端使用rev()函數(shù)接收數(shù)據(jù),這樣,Socket就連接了兩端的應(yīng)用程序。套接字機(jī)制提供了一系列的系統(tǒng)調(diào)用函數(shù),通過(guò)這些函數(shù)調(diào)用,應(yīng)用程序就可以在掩蓋通信協(xié)議細(xì)節(jié)的情況下實(shí)現(xiàn)網(wǎng)絡(luò)傳輸。

        2 通信環(huán)境搭建

        本系統(tǒng)是跨平臺(tái)網(wǎng)絡(luò)聊天室,Linux為服務(wù)器端,用于接收客戶(hù)端請(qǐng)求,而客戶(hù)端可以是Windows操作系統(tǒng),也可以是Linux操作系統(tǒng)。為避免使用多個(gè)計(jì)算機(jī)的麻煩,本系統(tǒng)在一臺(tái)計(jì)算機(jī)上安裝虛擬機(jī),虛擬機(jī)為L(zhǎng)inux操作系統(tǒng),另外一個(gè)是Win7操作系統(tǒng),在進(jìn)行編程之前,要先檢驗(yàn)Win7操作系統(tǒng)與Linux操作系統(tǒng)是否可以正常進(jìn)行網(wǎng)絡(luò)通信。把虛擬機(jī)端設(shè)置成橋接連接方式[3],這樣虛擬機(jī)就可以當(dāng)成獨(dú)立機(jī)。主機(jī)IP地址為192.168.131.153 ,虛擬機(jī)地址為192.168.131.152,通過(guò)ping命令檢驗(yàn)互通性。

        3 跨平臺(tái)通信設(shè)計(jì)

        3.1 Linux平臺(tái)服務(wù)器設(shè)計(jì)

        通過(guò)此函數(shù)把消息發(fā)送給每個(gè)連接的客戶(hù)端;服務(wù)端程序父子進(jìn)程分別負(fù)責(zé)發(fā)送和接收數(shù)據(jù),以避免數(shù)據(jù)沖撞;本程序服務(wù)端端口號(hào)設(shè)定為:3490,端口綁定函數(shù)int bindPort(unsigned short int port) ,此函數(shù)用來(lái)創(chuàng)建socket(AF_INET,SOCK_STREAM,0)流套接字,并綁定到指定的端口,在Linux操作系統(tǒng)下不需要初始化。

        當(dāng)有客戶(hù)端請(qǐng)求連接時(shí),accept(sockfd,(struct sockaddr*)&their_addr,&sin_size)用來(lái)接受客戶(hù)端連接。連接成功后,服務(wù)器創(chuàng)建子進(jìn)程,子進(jìn)程ppid = fork()。父進(jìn)程負(fù)責(zé)接收數(shù)據(jù),子進(jìn)程負(fù)責(zé)發(fā)送數(shù)據(jù),把接收到的數(shù)據(jù)轉(zhuǎn)發(fā)給已連接的客戶(hù)端。

        3.2 客戶(hù)端設(shè)計(jì)

        因?yàn)榇顺绦驗(yàn)榱奶焓?,所以客?hù)端設(shè)計(jì)分為Windows平臺(tái)和Linux平臺(tái)。

        3.2.1 Windows平臺(tái)客戶(hù)端設(shè)計(jì)

        Windows客戶(hù)端采用MFC框架來(lái)編寫(xiě)socket程序[4]。打開(kāi)Visual C++6.0新建MFC應(yīng)用程序,添加兩個(gè)窗體,分別為登陸窗口和聊天室窗口。在登陸窗體中添加3個(gè)textBox控件,分別為textBox1(昵稱(chēng)輸入框)、textBox2(服務(wù)器IP輸入框)、textBox1(服務(wù)器端口號(hào)輸入框),并添加兩個(gè)button控件,分別為button1(登陸)、button2(退出)。在聊天室窗體中添加兩個(gè)textBox控件,分別為textBox1(消息顯示框)、textBox2(消息輸入框),并添加兩個(gè)button控件,分別為button1(發(fā)送)、button2(退出)。

        請(qǐng)求連接:新建socket、ServerIP和Port分別表示服務(wù)器IP地址和端口號(hào),通過(guò)函數(shù)Connect(ServerIP,Port)連接到Linux服務(wù)器端,成功以后即可收發(fā)數(shù)據(jù)。

        發(fā)送與接收消息:定義發(fā)送的字符串為Message,將消息輸入框textBox1中的內(nèi)容指定為Message,通過(guò)send()函數(shù)進(jìn)行消息發(fā)送。新建一個(gè)byte數(shù)組byte[] RecvBuffer,通過(guò)Recv(RecvBuffer)函數(shù)將接收到的消息存放到RecvBuffer中,接收成功后,將內(nèi)容顯示到顯示框。

        3.2.2 Linux平臺(tái)客戶(hù)端設(shè)計(jì)

        Linux平臺(tái)客戶(hù)端使用C語(yǔ)言編寫(xiě)。首先創(chuàng)建客戶(hù)端套接字clientfd = socket(AF_INET,SOCK_STREAM,0),第二個(gè)參數(shù)表明為流式套接字,即面向連接;然后請(qǐng)求連接服務(wù)器端,通過(guò)connect(clientfd,(struct sockaddr *)&clientaddr,sizeof(struct sockaddr))這個(gè)函數(shù)請(qǐng)求。連接成功后,創(chuàng)建子進(jìn)程pid = fork(),父進(jìn)程用于發(fā)送信息,子進(jìn)程用于接收信息。

        4 運(yùn)行結(jié)果分析

        4.1 啟動(dòng)Linux服務(wù)器端

        4.2 啟動(dòng)Windows客戶(hù)端

        打開(kāi)Visual C++編譯、連接成功后,出現(xiàn)登錄窗體,輸入姓名、服務(wù)器IP地址和端口號(hào),點(diǎn)擊連接,和Linux端進(jìn)行連接。此時(shí)用兩個(gè)客戶(hù)端進(jìn)行測(cè)試。和服務(wù)器端連接成功后,Windows客戶(hù)端和Linux客戶(hù)端可以組建一個(gè)聊天室收發(fā)消息。以Windows其中的一個(gè)客戶(hù)端為例,在消息輸入框中輸入消息,點(diǎn)擊發(fā)送,Linux服務(wù)器端接收到消息,然后轉(zhuǎn)發(fā)給其它客戶(hù)端,3個(gè)客戶(hù)端分別發(fā)送完消息后,Windows其中一個(gè)客戶(hù)端顯示內(nèi)容如圖3所示。

        4.3 啟動(dòng)Linux客戶(hù)端

        在Linux系統(tǒng)下執(zhí)行完上述命令后,客戶(hù)端就和服務(wù)器連接了, Linux客戶(hù)端可以一邊發(fā)送

        消息,一邊接收服務(wù)器發(fā)來(lái)的消息,Linux客戶(hù)端顯示如圖4所示。

        5 結(jié)語(yǔ)

        本文研究了Linux與Windows之間的通信問(wèn)題。雙方采用TCP/IP協(xié)議,運(yùn)用socket接口來(lái)開(kāi)發(fā)網(wǎng)絡(luò)通信程序。本程序?qū)崿F(xiàn)了網(wǎng)絡(luò)聊天室功能,服務(wù)器能向不同的客戶(hù)端同時(shí)轉(zhuǎn)發(fā)另一個(gè)客戶(hù)端發(fā)來(lái)的消息,不同用戶(hù)可對(duì)消息及時(shí)共享。經(jīng)過(guò)測(cè)試,本程序達(dá)到預(yù)期效果。

        參考文獻(xiàn):

        [1] 李峰.利用流式Socket編程實(shí)現(xiàn)Windows與Linux的通信[J].微計(jì)算機(jī)信息,2006(1):112118.

        [2] 郭勇.利用Socket開(kāi)發(fā)客戶(hù)/服務(wù)器應(yīng)用[J].廣西師范大學(xué):自然科學(xué)版,2000,18(1):2426.

        [3] 周西峰,陸鵬,郭前崗. 利用流Socket實(shí)現(xiàn)Windows與Linux平臺(tái)間的網(wǎng)絡(luò)通信[J].微型機(jī)與應(yīng)用,2013,32(18):4952.

        [4] 多納霍,卡爾福特.TCP/IP socket編程[M].陳宗斌,譯.北京:清華大學(xué)出版社,2009.

        責(zé)任編輯(責(zé)任編輯:杜能鋼)

        英文摘要Abstract:In order to achieve the crossplatform communication of Linux and Windows, and make information sharing timely,the article build a communication program of internet chatroom for crossplatform.First,it build environment of crossplatform communication , and then use network programming interface of socket.The whole system adopts a Client/Server(C/S) model, using MFC framework to write Windows client, Linux, including server and client, use C language to realize.It is tested that client of Linux and Windows can successfully connect to the server.Then it can realize the function of the crossplatform internet chatroom.

        英文關(guān)鍵詞Key Words: Linux;Windows;Socket;C/S

        猜你喜歡
        客戶(hù)機(jī)服務(wù)器
        Reducing the global cancer burden with gastrointestinal screening: China’s 30 years practice
        通信控制服務(wù)器(CCS)維護(hù)終端的設(shè)計(jì)與實(shí)現(xiàn)
        得形忘意的服務(wù)器標(biāo)準(zhǔn)
        計(jì)算機(jī)網(wǎng)絡(luò)安全服務(wù)器入侵與防御
        瘦客戶(hù)機(jī):安全與便捷的選擇
        基于Web數(shù)據(jù)提高訪問(wèn)速度的方法
        積分刷刷刷-FTP服務(wù)器篇
        NEC推低安裝成本瘦客戶(hù)機(jī)
        少妇熟女淫荡丰满| 精品久久有码中文字幕| 综合图区亚洲另类偷窥| 国产精品永久免费| 午夜不卡久久精品无码免费| 亚洲V在线激情| 亚洲精品国产主播一区二区| 精品国产日韩亚洲一区在线| 无遮高潮国产免费观看韩国| 蜜桃视频网站在线免费观看| 久久精品国产白丝爆白浆| 北条麻妃在线中文字幕| 大又大又粗又硬又爽少妇毛片| 天天躁日日躁狠狠躁欧美老妇小说| 亚洲av无码一区二区乱孑伦as | 久久青草国产免费观看| 长腿丝袜在线观看国产| 国内偷拍精品一区二区| 中文字幕一区二区av| 在线观看特色大片免费视频| 夜先锋av资源网站| 日日躁夜夜躁狠狠躁超碰97| 天天射色综合| 亚洲一区中文字幕视频| 亚洲精品久久久久一区二区| 18禁黄久久久aaa片| 免费中文熟妇在线影片| 亚洲天堂免费成人av| 人妻中文字幕在线一二区| 久久国产在线精品观看| 国产成人a∨激情视频厨房| 日本老熟妇乱| 久久国产亚洲AV无码麻豆| 丝袜美女美腿一区二区| 亚洲成人福利在线视频| 久久久久亚洲av成人无码 | 亚洲国产高清在线一区二区三区 | 人妻少妇久久中中文字幕| 我和丰满妇女激情视频| 久久不见久久见中文字幕免费 | 不卡a v无码在线|