茍曦
Internet 技術的發展促進了 Java 語言的發展,網絡編程是Java 語言的重要功能,Java 系統的 API 中按類的形式提供了 3種不同層次的網絡技術機制,用 URL 訪問網絡資源的類,利用 Socket(套接字)通信的類以及 Datagram(數據報)類,這些網絡功能都定義在 Java.NET 程序包中。網絡應用是 Java 語言取得成功的領域之一,Java 現在已經成為 Internet 上最流行的一種編程語言,
一、TCP網絡程序編寫原理
TCP 網絡程序是指利用 Socket 編寫的通信程序。利用 TCP 協議進行通信的兩個應用程序是有主次之分的,一個是服務器程序,一個是客戶端程序,兩者的功能和編寫方法不太一樣。其中 ServerSocket 類表示 Socket 服務器端,Socket 類表示 Socket 客戶端,兩者之間的交互過程如下:
(1)服務器端創建一個 ServerSocket(服務器端套接字),調用 accept()方法等待客戶端來連接。
(2)客戶端程序創建一個 Socket,請求與服務器建立連接。
(3)服務器接收客戶的連接請求,同時創建一個新的 Socket 與客戶建立連接,服務器繼續等待新的請求。
二、使用 TCP/IP 協議
TCP/IP 協議是一種面向連接的保證可靠傳輸的協議,通過 TCP協議傳輸,得到的是一個順序的無差錯的數據流。發送方和接收方必須成對地建立兩個 socket 連接,以便在 TCP 協議的基礎上進行通信,當一個socket(通常都是 server socket)等待建立連接時,另一個 socket 可以要求進行連接,一旦這兩個 socket 連接起來,它們就可以進行雙向數據傳輸,雙方都可以進行發送或接收操作。
三、Client/Server 程序設計
筆者用 Socket 編寫實現的客戶和服務器交互的典型的 C/S 結構的演示程序,通過仔細閱讀該程序,會對前面所討論的各個概念有更深刻的認識。
例:客戶端程序
import java.io.*;
import java.net.*;
public class TalkClient {
public static void main(String args []){
try {
Socket socket=new Socket(" 127.0.0.1",4700);
//向本機的 4700 端口發出客戶請求
BufferedReader sin =new BufferedReader(new InputStream-
Reader(System.in));
//由系統標準輸入設備構造 BufferedReader 對象
PrintWriter os=new PrintWriter(socket.getOutputStream());
//由 Socket 對象得到輸出流,并構造 PrintWriter 對象
BufferedReader is =new BufferedReader(new InputStream-
Reader(socket.getInputStream()));
//由 Socket 對象得到輸入流,并構造相應的
//BufferedReader 對象
String readline;
readline=sin.readLine();
//從系統標準輸入讀入一字符串
while(! readline.equals(" bye")){
//若從標準輸入讀入的字符串為 " bye" 則停止循環
os.println(readline);
//將從系統標準輸入讀入的字符串輸出到 Server
os.flush();
//刷新輸出流,使 Server 馬上收到該字符串
System.out.println(" Client:" +readline);
//在系統標準輸出上打印讀入的字符串
System.out.println(" Server:" +is.readLine());
//從 Server 讀入一字符串,并打印到標準輸出上
readline=sin.readLine();
//從系統標準輸入讀入一字符串
} //繼續循環
os.close();//關閉 Socket 輸出流
is.close();//關閉 Socket 輸入流
socket.close();//關閉 Socket
} catch(Exception e){
System.out.println(" Error" +e);
//出錯,則打印出錯信息}
四、結束語
本文對Java網絡編程實現的方法做了探討,用Java的Socket進行網絡編程實現是比較容易的,它是網絡上大部分應用程序得以實現的有效途徑。
參考文獻:
[1] 王常衡,任廣鵬,羅欽,et al.基于TCP的Socket網絡編程[J].科技經濟導刊,2019,27(07):42.
[2] 張雪坤.基于Socket的網絡聊天程序設計與實現[J].電腦編程技巧與維護,2018(4):16-17.
[3] 田東燊,李思軍,孫旭飛.有限帶寬中基于Socket的網絡通信圖像傳輸與實現[J].電視技術,2018,42(08):61-65+71.
[4] 羅志聰,許昊,葉廷東.基于Android平臺的模擬計算機輸入設備研究[J].自動化與信息工程,2018,v.39(02):28-32.
(作者單位:重慶工業職業技術學院)