寫了個簡單的socket通信
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();
}
}
}
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();
}
}
}
其中發現br.readLine()讀取是阻塞,原因是readLine()讀取到換行或者流關閉纔會返回,所以需要在後邊加/n