(для будущих читателей :) У меня была такая же проблема, потому что я сделал глупое изменение в серверной программе и долгое время не проверял ее, тогда я был озадачен, почему программа заблокирована.
ServerSocket
принимает соединение (responderSocket = serverSock.accept();
), а затем неожиданно для неподходящей if
(глупое изменение, о котором я говорил!) Выпрыгивает из потока, и потому что я не добавил finally
блок для закрытия потоков и сокетов сокет был оставлен без отправки или получения чего-либо (даже заголовков потока).Поэтому в клиентской программе не было заголовка потока (когда я отлаживал код, который я видел, что последняя функция, выполненная перед блокировкой, была:
public ObjectInputStream(InputStream in) throws IOException {
verifySubclass();
bin = new BlockDataInputStream(in);
handles = new HandleTable(10);
vlist = new ValidationList();
enableOverride = false;
readStreamHeader(); //// <== This function
bin.setBlockDataMode(true);
}
readStreamHeader();
)
Так что будьте осторожны счто происходит на стороне сервера, возможно, проблема не в том, что вы ожидаете!