1.创建服务端

package com.yqq.app2;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

/**
* @Author yqq
* @Date 2021/11/06 22:43
* @Version 1.0
*/
public class TwoWaySocketServer {
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket socket =null;
BufferedReader bufferedReader = null;
Scanner scanner = null;
PrintWriter printWriter =null;
try{
serverSocket = new ServerSocket(8888);
System.out.println("服务端启动,监听端口8888");
socket = serverSocket.accept();
//创建从客户端读取消息的流对象
bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//创建键盘输入对象
scanner = new Scanner(System.in);
//创建向客户端发送消息的输出流对象
printWriter=new PrintWriter(socket.getOutputStream());
while (true){
//读取客户端发送的消息
String str = bufferedReader.readLine();
System.out.println("客户端说:"+str);
String keyInput = scanner.nextLine();
//发送到客户端
printWriter.println(keyInput);
printWriter.flush();
}
}catch (Exception e){
e.printStackTrace();
}finally {
if(serverSocket != null) {
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(socket != null) {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(printWriter != null){
printWriter.close();
}
if(bufferedReader!=null){
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

2.创建客户端

package com.yqq.app2;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

/**
* @Author yqq
* @Date 2021/11/06 22:55
* @Version 1.0
*/
public class TwoWaySocketClient {
public static void main(String[] args) {
Socket socket = null;
Scanner scanner =null;
PrintWriter printWriter=null;
BufferedReader bufferedReader =null;
try {
socket = new Socket("127.0.0.7",8888);
//创建键盘输入对象
scanner=new Scanner(System.in);
//向服务端发送消息的流对象
printWriter=new PrintWriter(socket.getOutputStream());
//创建读取服务端发送消息的流对象
bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
while (true){
String keyInput = scanner.nextLine();
printWriter.println(keyInput);
printWriter.flush();
String input = bufferedReader.readLine();
System.out.println("服务端说:"+input);
}
}catch (Exception e){
e.printStackTrace();
}finally {
if(socket!=null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(bufferedReader!=null){
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(scanner!=null){
scanner.close();
}
if(printWriter!=null){
printWriter.close();
}
}
}
}

TCP 双向通信_客户端
TCP 双向通信_tcp/ip_02