更新時間:2020-05-11 16:29:16 來源:動力節點 瀏覽3103次
Socket是兩個程序之間進行雙向數據傳輸的網絡通訊端點,有一個地址和一個端口號來標識。每個服務程序在提供服務時都要在一個端口進行,而想使用該服務的客戶機也必須連接該端口。Socket因為是基于傳輸層,所以它是比較原始的通訊協議機制。通過Socket的數據表現形式為字節流信息,因此通訊雙方要想完成某項具體的應用則必須按雙方約定的方式進行數據的格式化和解釋,我們可以看出使用Socket編程比較麻煩,但是它具有更強的靈活性和更廣泛的使用領域。
服務器端:
InputStream——輸入流,是用來接收來自客戶端的數據。
OutputStream——-輸出流,是服務器向客戶端發送的數據。
客戶端:
InputStream——輸入流,是用來接收來自服務端的數據。
OutputStream——-輸出流,是客戶端向服務器端發送的數據。
下面我們就通過具體的代碼來演示一下
Server端
首先調用ServerSocket類以某個端口號為參數,創建一個ServerSocket對象,即是服務器端的服務程序在該指定端口監聽的Socket。
服務器端程序使用ServerSocket對象的accept()方法,接收來自客戶機程序的連接請求,此時服務器端將一直保持停滯狀態,直到收到客戶端發來的連接請求,此時該方法將返回一個新建的Socket類的實例,代表和客戶機建立的通訊鏈路在服務程序內的通訊端點。如果采用Java的多線程編程方法,可以實現并發服務器,繼續監聽來自其他客戶的連接請求。
使用新建的Socket對象創建輸入、輸出流對象。
使用流對象的方法完成和客戶端的數據傳輸,按約定協議識別并處理來自客戶端的請求數據,并把處理的結果返回給客戶端。
客戶端工作完畢后,則服務器端程序關閉和客戶端通訊的流和通訊的Socket。
在服務器程序運行結束之間,應當關閉用來監聽的Socket.
下面來看看具體的代碼實現
Client客戶端
首先調用Socket類的構造函數,以服務器的指定的IP地址或指定的主機名和指定的端口號為參數,創建一個Socket流,在創建Socket流的過程中包含了向服務器請求建立通訊連接的過程實現。
建立了客戶端通訊Socket后。就可以使用Socket的方法getInputStream()和getOutputStream()來創建輸入/輸出流。這樣,使用Socket類后,網絡輸入輸出也轉化為使用流對象的過程。
使用輸入輸出流對象的相應方法讀寫字節流數據,因為流連接著通訊所用的Socket,Socket又是和服務器端建立連接的一個端點,因此數據將通過連接從服務器得到或發向服務器。這時我們就可以對字節流數據按客戶端和服務器之間的協議進行處理,完成雙方的通訊任務。
待通訊任務完畢后,我們用流對象的close()方法來關閉用于網絡通訊的輸入輸出流,在用Socket對象的close()方法來關閉Socket。
下面我們來看看客戶端代碼
這樣我們就完成java采用Socket實現簡單的網絡編程,這兩個類可以直接復制運行
以上就是動力節點java培訓機構的小編針對“Java socket編程步驟,實現網絡編程”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習