双向通信是指通信双方中,任何一方都可为发送端,任何一方都可为接收端。
创建服务端
public class TwoWaySocketServer {
public static void main(String[] args){
System.out.println("服务端启动!监听端口8888");
try(ServerSocket serverSocket = new ServerSocket(8888);
Socket socket = serverSocket.accept();
//创建键盘输入对象
Scanner scanner = new Scanner(System.in);
//通过与客户端对应的Socket对象获取输入流对象
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//通过与客户端对应的Socket对象获取输出流对象
PrintWriter pw = new PrintWriter(socket.getOutputStream());
){
while(true){
//读取客户端发送的消息
String str = br.readLine();
System.out.println("客户端说:"+str);
String keyInput = scanner.nextLine();
//发送到客户端
pw.println(keyInput);
pw.flush();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
创建客户端
public class TwoWaySocketClient {
public static void main(String[] args){
try(Socket socket = new Socket("127.0.0.1",8888);
//创建键盘输入对象
Scanner scanner = new Scanner(System.in);
//通过与服务端对应的Socket对象获取输入流对象
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//通过与服务端对应的Socket对象获取输出流对象
PrintWrriter pw = new PrintWriter(socket.getOutputStream());
){
while(true){
String keyInput = scanner.nextLine();
pw.println(keyInput);
pw.flush();
String input = br.readLine();
System.out.println("服务端说"+input);
}
}catch(Execption e){
e.printStackTrace();
}
}
}