Socket編程

主要內容:

1.        什麼是Socket?

2.        Socket基本通信模型

3.        使用基於TCP協議的Socket

4.        使用基於UDP協議的Socket

課程內容:

1.        什麼是Socket?
Socket(套接字)是一種抽象層,應用程序通過它來發送和接收數據,就像應用程序打開了一個文件句柄,將數據讀寫到穩定的存儲器上一樣。使用Socket可以將應用程序添加到網絡中,並與處於同一網絡中的其他應用程序進行通信。一臺計算機上的應用程序向socket寫入的信息能夠被另一臺計算機上的另一個應用程序讀取,反之依然。根據不同的的底層協議實現,也會很多種不同的Socket。本課當中只覆蓋了TCP/IP協議族的內容,在這個協議族當中主要的Socket類型爲流套接字(stream socket)和數據報套接字(datagram socket)。流套接字將TCP作爲其端對端協議,提供了一個可信賴的字節流服務。數據報套接字使用UDP協議,提供可一個“盡力而爲”的數據報服務,應用程序可以通過它發送最長65500字節的個人信息。

2.     Socket基本通信模型

3.        使用基於TCP協議的Socket
一個客戶端要發起一次通信,首先必須知道運行服務器端的主機IP地址。然後由網絡基礎設施利用目標地址,將客戶端發送的信息傳遞到正確的主機上,在Java中,地址可以由一個字符串來定義,這個字符串可以使數字型的地址(比如192.168.1.1),也可以是主機名(example.com)。
在Java當中InetAddress類代表了一個網絡目標地址,包括主機名和數字類型的地址信息。下面爲大家介紹一下基於TCP協議操作Socket的API:
ServerSocket:這個類是實現了一個服務器端的Socket,利用這個類可以監聽來自網絡的請求。

a)        創建ServerSocket的方法:
ServerSocket(Int localPort)
ServerSocket(int localport,int queueLimit)
ServerSocket(int localport,int queueLimit,InetAddress localAddr)
創建一個ServerSocket必須指定一個端口,以便客戶端能夠向該端口號發送連接請求。端口的有效範圍是0-65535

b)        ServerSocket操作
Socket accept()
void close
accept()方法爲下一個傳入的連接請求創建Socket實例,並將已成功連接的Socket實例返回給服務器套接字,如果沒有連接請求,accept()方法將阻塞等待;
close方法用於關閉套接字

Socket:

a)        創建Socket的方法:
Socket(InetAddress remoteAddress,int remotePort)

利用Socket的構造函數,可以創建一個TCP套接字後,先連接到指定的遠程地址和端口號。

b)        操作Socket的方法
InputStream getInputStream()
OutputStream getOutputStream()
void close()

操作TCPsocket的圖示:

使用基於UDP的Socket

a)        創建DatagramPacket
DatagramSocket(byte [] data,int offset,int length,InetAddress remoteAddr,intremotePort)
該構造函數創建一個數據報文對象,數據包含在第一個參數當中

b)        創建DatagramSocket創建
DatagramSocket(int localPort)
以上構造函數將創建一個UDP套接字;

c)        DatagramSocket:發送和接受
void send(DatagramPacket packet)
void receive(DatagramPacket packet)
send()方法用來發送DatagramPacket實例。一旦創建連接,數據報將發送到該套接字所連接的地址;
receive()方法將阻塞等待,知道接收到數據報文,並將報文中的數據複製到指定的DatagramPacket實例中



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章