服务器端: 在while无限循环中,dis引用变量指向的对象(Socket流)是不断变化的吗?
多个服务端发送请求,会出现等待的情况吧, 只有处理上一个客户端的流,才能接受下一个流对象?
所以得客户端关闭后, dis指向null ,再去读取数据应该抛出IO异常啊,但是实际中没有抛出,
是因为accept方法是阻塞的吗?
public static void main(String[] args) throws IOException {
System.out.println("----------------服务器端已开启---------------------");
// (1)创建ServerSocket对象
ServerSocket server = new ServerSocket(9999);
// (2)监听客户端是否有客户端连接
Socket socket = server.accept();
// (3)获取输入流接收数据
DataInputStream dis = new DataInputStream(socket.getInputStream());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
while(true){
String str = dis.readUTF();
System.out.println("客户端发送的数据为:-->" + str);
// (4)获取输出流响应客户端的请求
dos.writeUTF("服务器端收到了:" + str);
}
// (5)关闭流
//CloseUtil.closeAll(dos, dis, socket);