一、Socket 1.Socket構造方法 構造方法說明 Socket() 該創建的對象,沒有指定IP地址和埠號,意味著只創建了客戶端對象,並且沒有連接任何伺服器。通過該構造方法創建對象後還需要調用connect(SocketAddress endpoint)方法,才能完成與指定伺服器端的連接,其 ...
一、Socket
1.Socket構造方法
構造方法 | 說明 |
---|---|
Socket() | 該創建的對象,沒有指定IP地址和埠號,意味著只創建了客戶端對象,並且沒有連接任何伺服器。通過該構造方法創建對象後還需要調用connect(SocketAddress endpoint)方法,才能完成與指定伺服器端的連接,其中參數endpoint用於封裝IP地址和埠號 |
Socket(String host,int port) | 使用該構造方法在創建Socket對象時會根據參數去連接在指定地址和埠上運行的伺服器程式,其中host接收的是一個字元串類型的IP地址 |
Socketa(InetAddress address,int port) | 該構造方法在使用上與第二個構造方法類似,參數address用於接受一個InetAddress類型的對象,該對象用於封裝一個IP地址。 |
2.Socket常用方法
方法 | 說明 |
---|---|
int getPort() | 返回一個int類型對象,該對象是Socket對象與伺服器連接的埠號。 |
InetAddress getLocalAddress() | 獲取Socket對象綁定的本地IP地址,並且IP地址封裝InetAddress類型的對象返回 |
void close() | 關閉Socket連接,結束本次通信。關閉Socket之前,應將與Socket相關的所有輸入流全部關閉,這是因為一個良好的程式應該在執行完畢時釋放所有的資源。 |
InputStream getInputStream() | 返回一個InputStream類型的輸入流對象。如果該對象是由伺服器端的Socket返回的,就用於讀取客戶端發送的數據;反之,就用於讀取伺服器端發送的數據。 |
OutputStream getOutputStream() | 返回一個OutputStream類型的輸出流對象。如果該對象是由伺服器端的Socket返回的,就用於向客戶端發送數據;反之,就用於向伺服器端發送數據。 |
package com.bjpowernode.java_learning; import java.io.DataInputStream; import java.io.DataOutputStream; import java.net.Socket; public class D126_1_Socket { public static void main(String[] args) { Socket client_socket = null; DataInputStream in = null; DataOutputStream out = null; String ip = "127.0.0.1"; //伺服器IP地址 int port = 5050; //伺服器埠 try { client_socket = new Socket(ip,port); //與伺服器建立連接 in = new DataInputStream(client_socket.getInputStream()); //創建輸入流 out = new DataOutputStream(client_socket.getOutputStream()); //創建輸出流 out.writeUTF("你好,我是客戶機A"); System.out.println("客戶機啟動,向伺服器發送信息:你好,我是客戶機A"); String str = in.readUTF();//等待讀取伺服器響應的信息,進入阻塞狀態 System.out.println("伺服器端的響應信息:"+str); }catch (Exception e) { System.out.println(e); }finally { try{ in.close();//關閉網路連接 out.close(); client_socket.close(); }catch(Exception e) { } } } }
運行結果: 釋義
- 該程式首先創建了綁定5050埠的伺服器端Socket,併進行連接監聽。如果有連接請求,則創建Socket連接,並且建立輸入流對象和輸出對象。通過輸入流對象讀取客戶端發來的內容,通過輸出流對象向客戶端發送相對內容。
二、源碼:
- D126_1_Socket.java
- https://github.com/ruigege66/Java/blob/master/D126_1_Socket.java
- CSDN:https://blog.csdn.net/weixin_44630050
- 博客園:https://www.cnblogs.com/ruigege0000/
- 歡迎關註微信公眾號:傅里葉變換,個人賬號,僅用於技術交流,後臺回覆“禮包”獲取Java大數據學習視頻禮包