999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

王海燕 郭元穎

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

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

一、聊天室所涉及到的理論知識(shí)

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

(一)圖形界面

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

(二)Socket編程

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

(三)多線程

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

(四)JDBC

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

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

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

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

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

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

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

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

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

四、結(jié)語(yǔ)

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

參考文獻(xiàn):

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

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

作者簡(jiǎn)介:

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

主站蜘蛛池模板: 99热亚洲精品6码| 亚洲美女久久| a级毛片一区二区免费视频| 精品视频一区在线观看| 免费一级毛片完整版在线看| 亚洲男人的天堂在线观看| 孕妇高潮太爽了在线观看免费| 国产成人91精品免费网址在线| 天天躁夜夜躁狠狠躁躁88| 亚洲天堂成人在线观看| 欧美日韩专区| 午夜高清国产拍精品| 亚洲午夜福利在线| 97国产成人无码精品久久久| 午夜啪啪网| www亚洲天堂| 91久久偷偷做嫩草影院电| 国产精品手机视频一区二区| 久久香蕉国产线看观看式| 嫩草国产在线| 中文字幕亚洲综久久2021| 国产精品理论片| 亚洲成人一区二区三区| 欧美日韩国产精品va| 色婷婷色丁香| 国产成人精品男人的天堂下载| 五月天婷婷网亚洲综合在线| 在线精品亚洲国产| 天堂va亚洲va欧美va国产| 久久综合色88| 欧美精品另类| 免费一级毛片完整版在线看| 精品亚洲欧美中文字幕在线看| 老熟妇喷水一区二区三区| 亚洲一区二区无码视频| 国产精品污视频| 精品一区国产精品| 亚洲不卡影院| 亚洲欧美天堂网| 色综合日本| 成人午夜精品一级毛片| 国产爽妇精品| 狼友av永久网站免费观看| 黄色网页在线观看| 一区二区自拍| 国产三级国产精品国产普男人 | 久久精品嫩草研究院| 国产精品妖精视频| 2021国产乱人伦在线播放| 免费国产不卡午夜福在线观看| 手机看片1024久久精品你懂的| 日本人妻丰满熟妇区| 免费观看无遮挡www的小视频| 特级欧美视频aaaaaa| 欧美精品H在线播放| 亚洲二三区| 国产精品福利在线观看无码卡| 免费在线色| 亚洲免费毛片| 国产又粗又猛又爽| 久久超级碰| 超清无码熟妇人妻AV在线绿巨人| 亚洲黄色网站视频| 亚洲精品午夜天堂网页| 亚洲中文字幕无码爆乳| 久久精品亚洲热综合一区二区| 国产喷水视频| 囯产av无码片毛片一级| 亚洲天堂网视频| 成人一级黄色毛片| 欧美精品综合视频一区二区| 69视频国产| www.91中文字幕| 99热这里只有成人精品国产| 又大又硬又爽免费视频| 精品久久国产综合精麻豆| 97久久人人超碰国产精品| 无码国内精品人妻少妇蜜桃视频 | 97精品伊人久久大香线蕉| 欧美一区二区精品久久久| 色综合五月婷婷| 成人日韩视频|