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

        ?

        用JAVA實現(xiàn)的基于TCP協(xié)議的網(wǎng)絡(luò)聊天室

        2020-07-04 16:19:51王海燕郭元穎
        科學(xué)與財富 2020年14期

        王海燕 郭元穎

        摘 要:Java是Sun公司推出的新一代面向?qū)ο蟮某绦蛟O(shè)計語言,由于它與生俱來的一些特性,例如: 面向?qū)ο?、平臺無關(guān)、 多線程、 高度安全性等等,使得它特別適合于網(wǎng)絡(luò)應(yīng)用程序的開發(fā)[1]。本文通過Java語言中的Socket編程、JDBC、多線程以及圖形界面等相關(guān)技術(shù)來設(shè)計、實現(xiàn)了一個基于TCP協(xié)議的網(wǎng)絡(luò)聊天室系統(tǒng)。

        關(guān)鍵詞:Java;Socket編程;多線程;網(wǎng)絡(luò)聊天室

        一、聊天室所涉及到的理論知識

        在開發(fā)聊天室系統(tǒng)時,考慮到界面以及功能的實現(xiàn),涉及到的理論知識點如下:

        (一)圖形界面

        Swing是Java為圖形界面應(yīng)用開發(fā)提供的一組工具包,是Java基礎(chǔ)類的一部分。Swing 包含了構(gòu)建圖形界面(GUI)的各種組件,如: 窗口、標簽、按鈕、文本框等。Swing 提供了許多比 AWT 更好的屏幕顯示元素,使用純Java實現(xiàn),能夠更好的兼容跨平臺運行[2]。

        (二)Socket編程

        網(wǎng)絡(luò)上的兩個程序通過一個雙向的通訊連接實現(xiàn)數(shù)據(jù)的交換,這個雙向鏈路的一端稱為一個Socket。Socket實際上是計算機提供的一個通信端口,通常用來實現(xiàn)客戶端和服務(wù)器端的連接。當客戶端程序連接到服務(wù)器端程序時,也就建立了一個雙向通信連接,客戶端就可以訪問服務(wù)器上的資源,同時得到相應(yīng)的服務(wù)。例如網(wǎng)絡(luò)上常用的telnet、ftp等協(xié)議都是基于Socket的服務(wù)器程序。

        (三)多線程

        一條線程指的是進程中一個單一順序的控制流,一個進程中可以并發(fā)多個線程,每條線程并行執(zhí)行不同的任務(wù)。Java支持多線程,因此用Java編寫的應(yīng)用程序可以同時執(zhí)行多個任務(wù)??紤]到服務(wù)器端可以同時給連接的多個客戶端提供服務(wù),需要通過多線程來實現(xiàn)。

        (四)JDBC

        JDBC,Java Database Connective,是連接java程序和數(shù)據(jù)庫之間的橋梁。它實際上是Java語言訪問數(shù)據(jù)庫的一種規(guī)范,是一組標準的Java語言中的接口和類。使用這些接口和類,Java客戶端程序可以訪問各種不同類型的數(shù)據(jù)庫??紤]到網(wǎng)絡(luò)聊天室中聊天信息的持久保存,可通過JDBC來實現(xiàn)。

        二、聊天室的設(shè)計

        本文的聊天室系統(tǒng)采用C/S結(jié)構(gòu),C表示客戶端,S表示服務(wù)器端。C/S結(jié)構(gòu)是目前較為流行的網(wǎng)絡(luò)系統(tǒng)開發(fā)結(jié)構(gòu),它可以充分利用兩端硬件環(huán)境的優(yōu)勢,降低系統(tǒng)的通訊開銷。通信時,先由客戶端向服務(wù)器端發(fā)出連接請求,服務(wù)器端始終運行來提供服務(wù)。服務(wù)器啟動后,就會監(jiān)聽網(wǎng)絡(luò)端口,一旦監(jiān)聽到有客戶端請求,就會啟動一個服務(wù)線程來響應(yīng)該客戶端,為該客戶端提供服務(wù),同時繼續(xù)監(jiān)聽服務(wù)器端口,再來一個客戶端還能繼續(xù)提供服務(wù),以此類推,這樣服務(wù)器端可以同時為多個客戶端提供服務(wù)。

        系統(tǒng)在設(shè)計時分為界面設(shè)計和功能設(shè)計。界面采用圖形界面,主要用到一些Swing組件并需要設(shè)計界面布局??蛻舳税ǖ卿浗缑?、主窗口界面。服務(wù)器端只有一個窗口界面。在設(shè)計功能時,客戶端具有的功能包括:發(fā)送聊天信息,顯示聊天記錄,上傳、下載文件、實時顯示聊天室在線人員列表、退出聊天室等。服務(wù)器端具有的功能包括:啟動服務(wù)器、接受客戶端的連接、啟動線程為客戶端提供服務(wù)、轉(zhuǎn)發(fā)信息(客戶端發(fā)送的聊天信息實際上是先發(fā)給服務(wù)器,然后由服務(wù)器再轉(zhuǎn)發(fā)給其他的客戶端)、統(tǒng)計連接到服務(wù)器的客戶端的個數(shù)、各自的信息,以及始終提供服務(wù)、繼續(xù)接收客戶端的連接、關(guān)閉服務(wù)等。本聊天室的功能模塊如圖1所示。

        三、聊天室的實現(xiàn)

        (一)服務(wù)器端的實現(xiàn)

        在C/S結(jié)構(gòu)的網(wǎng)絡(luò)程序中,服務(wù)器作為提供服務(wù)的進程,要始終提供服務(wù),當它啟動后就等待客戶端的連接請求。通常一個服務(wù)器可以同時為多個客戶端提供服務(wù),這可以通過多線程機制來實現(xiàn)。這種多線程的并行通信方式,可以極大提高服務(wù)器的資源利用效率,讓客戶端有更好的體驗。另外,客戶端與服務(wù)器端的通信通過Socket來實現(xiàn),Socket是網(wǎng)絡(luò)上運行的兩個程序間雙向通信的一端,它既可以接收請求,也可以發(fā)送請求,利用它可以很方便地進行網(wǎng)絡(luò)數(shù)據(jù)傳輸。除此之外,服務(wù)器還需要存儲所有連接到它的客戶端,可通過集合類來存儲。這樣便于統(tǒng)計連接的客戶端的數(shù)量,同時實現(xiàn)消息的轉(zhuǎn)發(fā)。在轉(zhuǎn)發(fā)消息時,同時將消息存儲到數(shù)據(jù)庫中。

        (二)客戶端的實現(xiàn)

        在C/S結(jié)構(gòu)的網(wǎng)絡(luò)程序中,客戶器作為請求的發(fā)出者,當向服務(wù)器端發(fā)出連接請求時,服務(wù)器給予響應(yīng)。建立連接之后,客戶端就可以向服務(wù)器發(fā)送聊天消息,同時接收服務(wù)器轉(zhuǎn)發(fā)的消息。由于客戶端需要一直接收服務(wù)器轉(zhuǎn)發(fā)的消息,需要啟動一個線程來實現(xiàn)??蛻舳嗽谏蟼?、下載文件時,傳輸內(nèi)容需要同發(fā)送、接收聊天消息區(qū)分開,可通過加個標識區(qū)分。在實時顯示在線人員列表時,同樣通過一個線程來實現(xiàn)。

        四、結(jié)語

        本聊天室圖形界面友好,具備聊天室基本的功能,雖然與QQ等聊天軟件尚有很大差距,但作為《Java高級編程應(yīng)用》這門課的教學(xué)案例還是很不錯的。該聊天室系統(tǒng)綜合運用了圖形界面、多線程、網(wǎng)絡(luò)編程、JDBC等相關(guān)知識,是綜合程度較高的一個案例。通過該案例的開發(fā),讓學(xué)生充分體會到所學(xué)知識的運用,進一步提高學(xué)生學(xué)習(xí)的興趣,教學(xué)效果良好。后續(xù)還可以繼續(xù)擴展該聊天室的功能,例如:實現(xiàn)私聊、添加頭像、添加表情等。

        參考文獻:

        [1]王素蘋.一種基于Java Swing的網(wǎng)絡(luò)聊天室的設(shè)計與實現(xiàn).現(xiàn)代計算機:2012.07.

        [2] https://blog.csdn.net/xietansheng/article/details/72814531.

        作者簡介:

        王海燕(1982—),碩士,山東信息職業(yè)技術(shù)學(xué)院。

        超碰人人超碰人人| 伊人久久综合狼伊人久久| 国产成人一区二区三区影院| 国产亚洲精品第一综合另类| 免费看泡妞视频app| 亚洲综合偷自成人网第页色| 精品自拍偷拍一区二区三区| 亚洲色图在线免费观看视频| a级毛片免费完整视频| 9999毛片免费看| 久久麻豆精亚洲av品国产蜜臀| 日本免费一区二区三区影院| 欧美日韩国产精品自在自线| 国产98在线 | 免费| 国产成人自拍小视频在线| 三上悠亚亚洲精品一区| 品色堂永远免费| 日韩国产精品一区二区Hd| 一二三四中文字幕日韩乱码| 久久亚洲中文字幕乱码| 色吊丝中文字幕| 亚洲一级黄色毛片| 亚洲在线一区二区三区| 大奶白浆视频在线观看| 老外和中国女人毛片免费视频| 综合色天天久久| 亚洲中文乱码在线观看| 国产精品无码人妻在线| 亚洲女人被黑人巨大进入| 国产经典免费视频在线观看| 女同三级伦理在线观看| 天天综合网在线观看视频 | 久久国产精品精品国产色| 国产乱子伦精品无码专区 | 中年人妻丰满AV无码久久不卡| 免费黄网站永久地址进入| 色偷偷色噜噜狠狠网站30根| 97精品依人久久久大香线蕉97| 成人国产精品免费网站| 91成人黄色蘑菇视频| 欧美成人精品三级网站|