在上篇例子中,存在缺陷
- 只能允许Client给Server发消息,Server无法发消息给Client端
- Client连接成功之后,Server就关闭了
这篇完善上篇的例子
TCP服务端
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Logger;
/**
* TCP 服务双向连接
* @version 1.0
* @author terry
* @date 2021/12/17
*/
public class TcpServer {
public static Logger logger = Logger.getGlobal();
private static DataInputStream input;
private static DataOutputStream out;
public static void main(String[] args) throws IOException {
logger.info("服务开始监听。。。");
ServerSocket server = new ServerSocket(5002);
while (true) {
Socket accept = server.accept();
logger.info("客户端连接。。。");
input = new DataInputStream(accept.getInputStream());
out = new DataOutputStream(accept.getOutputStream());
String data = input.readUTF();
out.writeUTF("hello client!");
logger.info("服务端接受的信息:" + data);
}/*
out.close();
input.close();
server.close();*/
}
}
TCP客户端
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.logging.Logger;
/**
* TCP 客户端双向连接
* @version 1.0
* @author terry
* @date 2021/12/17
*/
public class TcpClient {
public static Logger logger = Logger.getGlobal();
public static void main(String[] args) throws IOException {
logger.info("客户端启动。。。");
Socket client = new Socket("localhost", 5002);
DataOutputStream out = new DataOutputStream(client.getOutputStream());
DataInputStream input = new DataInputStream(client.getInputStream());
out.writeUTF("hello server!");
out.flush();
// 未接受消息会阻塞
String msg = input.readUTF();
logger.info("客户端接受消息:" + msg);
out.close();
input.close();
client.close();
}
}
启动顺序 先启动TCP服务端 后启动TCP客户端
TCP 服务端打印:
十二月 18, 2021 11:31:07 上午 com.terry.demo2.TcpServer main
信息: 服务开始监听。。。
十二月 18, 2021 11:31:12 上午 com.terry.demo2.TcpServer main
信息: 客户端连接。。。
十二月 18, 2021 11:31:12 上午 com.terry.demo2.TcpServer main
信息: 服务端接受的信息:hello server!
TCP 客户端打印:
十二月 18, 2021 11:31:12 上午 com.terry.demo2.TcpClient main
信息: 客户端启动。。。
十二月 18, 2021 11:31:12 上午 com.terry.demo2.TcpClient main
信息: 客户端接受消息:hello client!