JavaSocket通訊
1 . 伺服器端
public class Server {
public static void main(String[] args) {
try {
// 1. 繫結埠,並監聽此埠
ServerSocket serverSocket = new ServerSocket(6000);
System.out.println("伺服器啟動成功...");
// 2. 呼叫accept()方法開始監聽,等待客戶端的連結
// 使accept()阻塞等待客戶端請求,有客戶請求到來則產生一個Socket物件,並繼續執行
Socket socket = serverSocket.accept();
// 3. 獲取輸入流,並調取客戶端資訊
// 由socket物件得到輸入流,並構造相應的BufferedReader物件
String line;
InputStream inputStream = socket.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
// 4. 由socket物件得到輸出流,並構造PrintWriter物件
PrintWriter writer = new PrintWriter(socket.getOutputStream());
// 5. 由系統的標準輸入裝置構造BufferedReader物件
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 6. 從標準輸入列印從客戶端度讀入的字串
line = br.readLine();
while(!line.endsWith("end")){
writer.println(line);
writer.flush();
System.out.println("Server: " + line);
System.out.println("Client: " + in.readLine());
line = br.readLine();
}
// 7. 釋放
writer.close();
in.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("伺服器啟動失敗...");
}
}
}
- 客戶端
public class Client {
public static void main(String[] args) {
try {
// 1. 建立客戶端Socket,指定伺服器地址和埠
Socket socket = new Socket("127.0.0.1", 6000);
System.out.println("客戶端啟動成功...");
// 2. 獲取輸出流, 向伺服器傳送訊息
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter writer = new PrintWriter(socket.getOutputStream());
// 3. 獲取輸入流,並讀取伺服器端的響應資訊
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String readLine;
readLine = br.readLine();
while(!readLine.equals("end")){
writer.println(readLine);
writer.flush();
System.out.println("Client: " + readLine);
System.out.println("Server: " + in.readLine());
readLine = br.readLine();
}
// 4. 釋放資源
writer.close();
in.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
System.out.println("未知主機");
} catch (IOException e) {
e.printStackTrace();
System.out.println("客戶端啟動失敗");
}
}
}
- 執行時首先開啟伺服器端,再開啟客戶端。在客戶端控制檯中輸入訊息,接下來在伺服器端控制檯數輸入訊息,可以看到客戶端傳送的訊息。
相關文章
- TCP/UDP簡單介紹及JavaSocket的使用TCPUDPJava
- 程序間的通訊(訊號通訊)
- 同步通訊和非同步通訊非同步
- 程式通訊 執行緒通訊執行緒
- 【React】元件通訊 - 跨層通訊React元件
- 程序通訊-訊號
- 程序通訊--訊號
- 網路通訊2:TCP通訊實現TCP
- 網路通訊3:TCP互動通訊TCP
- 網路通訊2:TCP簡單通訊TCP
- 紅色通訊史(三):延安通訊故事
- Binder通訊機制與IPC通訊.md
- TCP通訊TCP
- react通訊React
- 程式通訊
- 安全通訊
- socket通訊
- Vue通訊Vue
- WebSockets通訊Web
- HTTP通訊HTTP
- javassl通訊Java
- 通訊/推送
- 序列通訊
- WebSocket通訊Web
- 序列通訊與並行通訊的區別並行
- 簡單區分WiFi通訊和WLAN通訊WiFi
- react元件通訊通識篇React元件
- 漫畫通訊:一圖看懂通訊發展史
- 秒懂雲通訊:通訊圈黑話大盤點
- WebRTC音訊通話升級為視訊通話Web音訊
- RabbitMQ 入門(一)同步通訊和非同步通訊MQ非同步
- ROS話題通訊和服務通訊的區別ROS
- websocket通訊原理Web
- vue元件通訊Vue元件
- React元件通訊React元件
- netty通訊Netty
- modbus tcp通訊TCP
- Qt usb通訊QT