Java 實例 - ServerSocket 和 Socket 通信實例
以下實例演示了如何實現客戶端發送消息到伺服器,伺服器接收到消息並讀取輸出,然後寫出到客戶端客戶端接收到輸出。
1、建立伺服器端
- 伺服器建立通信ServerSocket
- 伺服器建立Socket接收客戶端連接
- 建立IO輸入流讀取客戶端發送的數據
- 建立IO輸出流向客戶端發送數據消息
伺服器端代碼:
Server.java 檔
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8888);
System.out.println("啟動伺服器....");
Socket s = ss.accept();
System.out.println("客戶端:"+s.getInetAddress().getLocalHost()+"已連接到伺服器");
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
//讀取客戶端發送來的消息
String mess = br.readLine();
System.out.println("客戶端:"+mess);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bw.write(mess+"\n");
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上代碼運行輸出結果為:
啟動伺服器....
2、建立客戶端
- 創建Socket通信,設置通信伺服器的IP和Port
- 建立IO輸出流向伺服器發送數據消息
- 建立IO輸入流讀取伺服器發送來的數據消息
客戶端代碼:
Client.java 檔
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) {
try {
Socket s = new Socket("127.0.0.1",8888);
//構建IO
InputStream is = s.getInputStream();
OutputStream os = s.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
//向伺服器端發送一條消息
bw.write("測試客戶端和服務器通信,伺服器接收到消息返回到客戶端\n");
bw.flush();
//讀取伺服器返回的消息
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String mess = br.readLine();
System.out.println("伺服器:"+mess);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上代碼運行輸出結果為:
伺服器:測試客戶端和服務器通信,伺服器接收到消息返回到客戶端