網絡編程
網絡編程是指編寫運行在多個設備(計算機)的程序,這些設備都通過網絡連接起來。
- 兩種常見的網絡協(xié)議的支持:
- TCP:TCP 是傳輸控制協(xié)議的縮寫畏纲,它保障了兩個應用程序之間的可靠通信。通常用于互聯(lián)網協(xié)議万牺,被稱 TCP / IP。
- UDP:UDP 是用戶數(shù)據報協(xié)議的縮寫,一個無連接的協(xié)議。提供了應用程序之間要發(fā)送的數(shù)據的數(shù)據包窍帝。
- 主要實現(xiàn)方法:
- Socket 編程
- URL 處理
Socket 編程
服務端與客戶端的關系
什么是Socket
網絡上的兩個程序通過一個雙向的通訊連接實現(xiàn)數(shù)據的交換,這個雙向鏈路的一端稱為一個Socket诽偷。Socket通常用來實現(xiàn)客戶方和服務方的連接。Socket是TCP/IP協(xié)議的一個十分流行的編程界面疯坤,一個Socket由一個IP地址和一個端口號唯一確定
但是报慕,Socket所支持的協(xié)議種類也不光TCP/IP一種,因此兩者之間是沒有必然聯(lián)系的压怠。在Java環(huán)境下眠冈,Socket編程主要是指基于TCP/IP協(xié)議的網絡編程
主要步驟
- 服務器實例化一個 ServerSocket 對象,表示通過服務器上的端口通信。
- 服務器調用 ServerSocket 類的 accept() 方法蜗顽,該方法將一直等待布卡,直到客戶端連接到服務器上給定的端口。
- 服務器正在等待時雇盖,一個客戶端實例化一個 Socket 對象忿等,指定服務器名稱和端口號來請求連接。
- Socket 類的構造函數(shù)試圖將客戶端連接到指定的服務器和端口號崔挖。如果通信被建立贸街,則在客戶端創(chuàng)建一個 Socket 對象能夠與服務器進行通信。
- 在服務器端狸相,accept() 方法返回服務器上一個新的 socket 引用薛匪,該 socket 連接到客戶端的 socket。
ServerSocket 類的方法
服務器應用程序通過使用 java.net.ServerSocket 類以獲取一個端口,并且偵聽客戶端請求脓鹃。
ServerSocket 類有四個構造方法
序號 | 方法描述 |
---|---|
1 | public ServerSocket(int port) throws IOException創(chuàng)建綁定到特定端口的服務器套接字逸尖。 |
2 | public ServerSocket(int port, int backlog) throws IOException利用指定的 backlog 創(chuàng)建服務器套接字并將其綁定到指定的本地端口號。 |
3 | public ServerSocket(int port, int backlog, InetAddress address) throws IOException使用指定的端口瘸右、偵聽 backlog 和要綁定到的本地 IP 地址創(chuàng)建服務器娇跟。 |
4 | public ServerSocket() throws IOException創(chuàng)建非綁定服務器套接字。 |
常用方法
方法 | 作用 |
---|---|
public int getLocalPort() | 返回此套接字在其上偵聽的端口尊浓。 |
public Socket accept() throws IOException | 偵聽并接受到此套接字的連接逞频。 |
public void setSoTimeout(int timeout) | 通過指定超時值啟用/禁用 SO_TIMEOUT,以毫秒為單位栋齿。 |
public void bind(SocketAddress host, int backlog) | 將 ServerSocket 綁定到特定地址(IP 地址和端口號)苗胀。 |
Socket 類的方法
java.net.Socket 類代表客戶端和服務器都用來互相溝通的套接字⊥叨拢客戶端要獲取一個 Socket 對象通過實例化 基协,而 服務器獲得一個 Socket 對象則通過 accept() 方法的返回值。
Socket 類有五個構造方法.
序號 | 方法描述 |
---|---|
1 | public Socket(String host, int port) throws UnknownHostException, IOException.創(chuàng)建一個流套接字并將其連接到指定主機上的指定端口號菇用。 |
2 | public Socket(InetAddress host, int port) throws IOException創(chuàng)建一個流套接字并將其連接到指定 IP 地址的指定端口號澜驮。 |
3 | public Socket(String host, int port, InetAddress localAddress, int localPort) throws IOException.創(chuàng)建一個套接字并將其連接到指定遠程主機上的指定遠程端口。 |
4 | public Socket(InetAddress host, int port, InetAddress localAddress, int localPort) throws IOException.創(chuàng)建一個套接字并將其連接到指定遠程地址上的指定遠程端口惋鸥。 |
5 | public Socket()通過系統(tǒng)默認類型的 SocketImpl 創(chuàng)建未連接套接字 |
體會
最近的內容逐漸與之前的內容融會貫通杂穷,前段時間有些不明白的東西今天寫了幾遍之后有種頓悟的感覺。