Java socket編程步驟,實(shí)現(xiàn)網(wǎng)絡(luò)編程

Java socket編程步驟,實(shí)現(xiàn)網(wǎng)絡(luò)編程

長沙牛耳教育      2022-03-25 22:20:01     8

Java socket編程步驟,實(shí)現(xiàn)網(wǎng)絡(luò)編程,Socket是兩個程序之間進(jìn)行雙向數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)通訊端點(diǎn),有一個地址和一個端口號來標(biāo)識。每個服務(wù)程序在提供服務(wù)時都要在一個端口

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細(xì)介紹

Socket是兩個程序之間進(jìn)行雙向數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)通訊端點(diǎn),有一個地址和一個端口號來標(biāo)識。每個服務(wù)程序在提供服務(wù)時都要在一個端口進(jìn)行,而想使用該服務(wù)的客戶機(jī)也必須連接該端口。Socket因?yàn)槭腔趥鬏攲?,所以它是比較原始的通訊協(xié)議機(jī)制。通過Socket的數(shù)據(jù)表現(xiàn)形式為字節(jié)流信息,因此通訊雙方要想完成某項(xiàng)具體的應(yīng)用則必須按雙方約定的方式進(jìn)行數(shù)據(jù)的格式化和解釋,我們可以看出使用Socket編程比較麻煩,但是它具有更強(qiáng)的靈活性和更廣泛的使用領(lǐng)域。

    服務(wù)器端:

    InputStream——輸入流,是用來接收來自客戶端的數(shù)據(jù)。

    OutputStream——-輸出流,是服務(wù)器向客戶端發(fā)送的數(shù)據(jù)。

    客戶端:

    InputStream——輸入流,是用來接收來自服務(wù)端的數(shù)據(jù)。

    OutputStream——-輸出流,是客戶端向服務(wù)器端發(fā)送的數(shù)據(jù)。

    下面我們就通過具體的代碼來演示一下

    Server端

    首先調(diào)用ServerSocket類以某個端口號為參數(shù),創(chuàng)建一個ServerSocket對象,即是服務(wù)器端的服務(wù)程序在該指定端口監(jiān)聽的Socket。

    服務(wù)器端程序使用ServerSocket對象的accept()方法,接收來自客戶機(jī)程序的連接請求,此時服務(wù)器端將一直保持停滯狀態(tài),直到收到客戶端發(fā)來的連接請求,此時該方法將返回一個新建的Socket類的實(shí)例,代表和客戶機(jī)建立的通訊鏈路在服務(wù)程序內(nèi)的通訊端點(diǎn)。如果采用Java的多線程編程方法,可以實(shí)現(xiàn)并發(fā)服務(wù)器,繼續(xù)監(jiān)聽來自其他客戶的連接請求。

    使用新建的Socket對象創(chuàng)建輸入、輸出流對象。

    使用流對象的方法完成和客戶端的數(shù)據(jù)傳輸,按約定協(xié)議識別并處理來自客戶端的請求數(shù)據(jù),并把處理的結(jié)果返回給客戶端。

    客戶端工作完畢后,則服務(wù)器端程序關(guān)閉和客戶端通訊的流和通訊的Socket。

    在服務(wù)器程序運(yùn)行結(jié)束之間,應(yīng)當(dāng)關(guān)閉用來監(jiān)聽的Socket.

    下面來看看具體的代碼實(shí)現(xiàn)

    Client客戶端

    首先調(diào)用Socket類的構(gòu)造函數(shù),以服務(wù)器的指定的IP地址或指定的主機(jī)名和指定的端口號為參數(shù),創(chuàng)建一個Socket流,在創(chuàng)建Socket流的過程中包含了向服務(wù)器請求建立通訊連接的過程實(shí)現(xiàn)。

    建立了客戶端通訊Socket后。就可以使用Socket的方法getInputStream()和getOutputStream()來創(chuàng)建輸入/輸出流。這樣,使用Socket類后,網(wǎng)絡(luò)輸入輸出也轉(zhuǎn)化為使用流對象的過程。

    使用輸入輸出流對象的相應(yīng)方法讀寫字節(jié)流數(shù)據(jù),因?yàn)榱鬟B接著通訊所用的Socket,Socket又是和服務(wù)器端建立連接的一個端點(diǎn),因此數(shù)據(jù)將通過連接從服務(wù)器得到或發(fā)向服務(wù)器。這時我們就可以對字節(jié)流數(shù)據(jù)按客戶端和服務(wù)器之間的協(xié)議進(jìn)行處理,完成雙方的通訊任務(wù)。

    待通訊任務(wù)完畢后,我們用流對象的close()方法來關(guān)閉用于網(wǎng)絡(luò)通訊的輸入輸出流,在用Socket對象的close()方法來關(guān)閉Socket。

    下面我們來看看客戶端代碼

    這樣我們就完成java采用Socket實(shí)現(xiàn)簡單的網(wǎng)絡(luò)編程,這兩個類可以直接復(fù)制運(yùn)行

 以上就是長沙牛耳教育java培訓(xùn)機(jī)構(gòu)的小編針對“Java socket編程步驟,實(shí)現(xiàn)網(wǎng)絡(luò)編程”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時為你服務(wù)。

培訓(xùn)啦提醒您:交易時請核實(shí)對方資質(zhì),對于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。