## Socket編程(網路通信) #### 伺服器端Demo(ServreSocket) 創建服務端時,如果不提供IP地址,則預設為本地連接(127.0.0.1),但是一定需要手動配置監聽埠! ```java public static void main(String[] args) { ...
Socket編程(網路通信)
伺服器端Demo(ServreSocket)
創建服務端時,如果不提供IP地址,則預設為本地連接(127.0.0.1),但是一定需要手動配置監聽埠!
public static void main(String[] args) {
// 如果不提供IP地址,預設localhost
// 但是伺服器端的埠號需要手動指令
try(ServerSocket serverSocket = new ServerSocket(10086);
// 伺服器端會一直阻塞在這個位置,等待客戶端接入,客戶端會在向伺服器端發送請求的時候,會將客戶端本身(socket對象)發送過來
Socket s = serverSocket.accept()) {
System.out.println("伺服器正在監聽:");
// 從客戶端獲取對應的輸入流
InputStream inputStream = s.getInputStream();
// 將輸入流進行二次封裝,封裝為數據流
DataInputStream dis = new DataInputStream(inputStream);
// 使用數據流的方法讀取字元串
String str = dis.readUTF();
System.out.println(str);
// 關閉流
dis.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
客戶端Demo(Socket)
創建客戶端時,客戶對象的埠由操作系統自動分配,參數傳遞服務端的IP地址以及伺服器監聽的埠
public static void main(String[] args) {
try(Socket s = new Socket("localhost",10086);
// 提供一個輸出流,用於寫入數據
OutputStream os = s.getOutputStream();
// 二次封裝
DataOutputStream dos = new DataOutputStream(os)) {
dos.writeUTF("Can you hear me?");
} catch (IOException e) {
throw new RuntimeException(e);
}
}