use*_*372 3 java sockets objectoutputstream
我正在做java服务器客户端应用程序,我有问题.当我想让ObjectInputStream卡住时,我成功地获得了客户端的套接字.
码:
serverSocket = new ServerSocket(9999);
while(true){
System.out.println("Waiting for player");
Socket socket = serverSocket.accept();
System.out.println("Player connected, waiting for command");
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
System.out.println("input created");
}
Run Code Online (Sandbox Code Playgroud)
输出:
Waiting for player
Player connected, waiting for command
我该怎么办?
该ObjectInputStream传入头等待.直到标题被完全接收,你将被困在这一行:
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
Run Code Online (Sandbox Code Playgroud)
要解决此问题,您需要flush()在建立连接后立即在另一端(即服务器)上调用ObjectOutputStream.
有关更多信息,请阅读javadoc.