摘要:本文介紹了Socket的網(wǎng)絡通信模式,講述了創(chuàng)建Socket的基本步驟和構造方法,并通過一個小程序?qū)崿F(xiàn)了Java中基于Socket的簡單網(wǎng)絡編程。
關鍵詞:Java;Socket;ServerSocket;通信
一、 引言
隨著計算機網(wǎng)絡的快速發(fā)展,帶動了Java語言的發(fā)展,Java越來越成為網(wǎng)絡上廣為流行的編程語言。Java是由Sun Microsystems公司于20世紀末推出的一門面向?qū)ο蟪绦蛟O計語言(簡稱Java語言)。用Java實現(xiàn)的支持Java applet的瀏覽器充分的展示出了Java的優(yōu)勢和魅力:跨各種操作系平臺、實現(xiàn)動態(tài)的Web技術、安全的語言權限檢查環(huán)境、JDK類庫提供的豐富網(wǎng)絡類庫,易于實現(xiàn)網(wǎng)絡編程的開發(fā)。Socket是Java網(wǎng)絡編程的基礎,本文就是從套接字的基本原理和使用方法出發(fā),并通過一個簡單網(wǎng)絡通信例子,講述在Java中使用Socket進行網(wǎng)絡編程。[1]
二、Socket通信的基本原理
1.什么是Socket
Socket通常也稱作“套接字”,當網(wǎng)絡上有兩個程序要進行會話的時候,就會通過一個端口發(fā)送請求或者應答命令,這個端口就是套接字。通常用Socket建立客戶端和服務端的雙向連接。在網(wǎng)絡通信中Socket主要是基于TCP/IP協(xié)議標準,它是在TCP/IP協(xié)議中使用很廣泛的一個編程界面,在通信過程中Socket的端口號和IP地址都是唯一確定的。
2.Socket的通信模式
Socket是基于C/S模式通信的,即面向客戶/服務器模型設計。在客戶端,使用套接字對特定網(wǎng)絡位置的某一服務器端口發(fā)出請求連接,當連接成功后就會開始進行會話,然后才關閉端口??蛻舳说亩丝谕ǔG闆r下是動態(tài)和隨機分配的。在服務器端,我們首先需要監(jiān)聽端口,使用ServerSocket來指定需要進行通訊的端口,在客戶請求道端口后成功后,服務器端進行連接,完成會話,在雙方通訊完畢后,關閉連接。
在任何一個完善的Socket工作過程中,都要按照以下幾個基本的步驟,才能建立正常的通信機制。首先創(chuàng)建一個Socket;然后進行連接請求道套接字的I/O流;再次依據(jù)通訊過程中采用的協(xié)議標準對套接字進行讀或?qū)懙牟僮?;最后完成會話并關閉Socket。
3.創(chuàng)建Socket
我們利用java.net包中的兩個類Socket和ServerSocket來分別建立到客戶端和服務端的套接字連接??蛻舳顺绦蚴褂肧ocket類建立到服務器的套接字連接。其構造方法如下:
public Socket():通過系統(tǒng)默認類型的SocketImpl創(chuàng)建未連接套接字。
public Socket(String host, int prot);連接到指定的主機和端口號。
Socket(InetAddress address, int port, boolean stream);連接到指定IP地址,主機端口和數(shù)據(jù)報方式的流。[2]
服務器端程序任務主要是監(jiān)聽,等待客戶機連接,建立一個等待客戶端連接的ServerSocket套接字。構造方法如下:
public ServerSocket(int port); 連接到的特定端口。public ServerSocket(int port, int backlog); 在聲明構造方法時候,必須對創(chuàng)建的 Socket或ServerSocket捕獲異?;驋伋隼?。
三、基于Socket的簡單通信實現(xiàn)
服務端的程序:
public class ServerDemo{
public static void main(String args[]) {
try{
ServerSocket ser=1;
ser=new ServerSocket(8080);//在端口8080監(jiān)聽請求
Socket client=server.accept();//保存接受請求信息
System.out.println(\"IP:\"+client.getInetAddress());
System.out.println(\"Port:\"+client.getPort());
ser.close();//關閉Socket
}catch(IOException e) {
System.out.println(\"Error.\"+e);
}
}
}
以上程序是一個基于Socket的簡單通信。
四、結語
這是一個簡單的基于Socket的通信應用,展現(xiàn)了Socket實現(xiàn)網(wǎng)絡編程的易實現(xiàn)性和其基本的通信原理,還有很多更深層的功能需要去挖掘,才能顯示其強大的網(wǎng)絡編程能力。
參考文獻
[1] 王東.基于Java的系統(tǒng)網(wǎng)絡編程[J].信息系統(tǒng)工程,2010,22(11):129-130;144.
[2] 江小燕.Java網(wǎng)絡編程的研究[J].電腦編程技巧與維護,2010,16(14): 6;18.