Tag: multithreading输入

在客户端JAVA中调用socket.close()时,套接字未关闭服务器端

我在java中遇到套接字问题。 我有一个正在使用accept()监听的ServerSocket ,并为每个客户端请求生成线程。 客户端和服务器之间的通信正常。 我正在使用输入流从serverthreads中的客户端读取数据,例如: inputStream = mySocket.getInputStream(); bytes = inputStream.read(buffer); 我的问题是,如果我从客户端调用socket.close(),则对bytes = inputStream.read(buffer);的阻塞调用没有任何反应bytes = inputStream.read(buffer); ,它继续阻止。 但是如果我从服务器关闭套接字,然后是inputStream.read(buffer);它就有效inputStream.read(buffer); 客户端返回“-1”。 SERVER-MAINTHREAD: //SERVER MAIN THREAD, SPAWNS CLIENT THREADS ServerSocket serverSocket = new ServerSocket(SERVERPORT); while (listening){ new ServerThread(serverSocket.accept(), monitor).start(); } SERVER-CLIENTTHREADS: public class ServerThread extends Thread{ public ServerThread(Socket socket, Monitor monitor) { this.socket = socket; this.monitor = monitor; […]