Запись в сокет Java зависает?

Один из моих исчерпывающих JUnit блокируется при записи в середине повторения.

Поток подобен пассивному поиску на FTP:

JUnit ----------- MOVE_REQ (dst port 4104) --------------------> Server
loop {
    JUnit <------ SEND_REQ with the object (dst port 1104) ---------- Server
    JUnit --------------- SEND_RSP  (same connection) --------------> Server
}
JUnit <-------- MOVE_RSP (same connection as first one) ----------- Server

Вся эта цепочка выполняется JUnit одновременно в нескольких потоках одновременно. Сервер на стороне JUnit (тот, который посещает SEND_REQ) - это пул из 5 потоков, точно такой же, как сервер на другой стороне.

В отладке я вижу сервер, зависший с SEND_REQ в файле OutputStream.write размером 16384 байта. С другой стороны, сервер jUnit застрял, читая поток с InputStream.read всего 6 байтов.

Первое, что я подумал, было то, что я не закрывал все соединения, и поэтому у меня была какая-то утечка в буферах. Но я проверил это с TcpView, и это нормально, в то время есть только одно соединение:

Есть идеи, почему это может происходить?

0 ответов

Другие вопросы по тегам