我的一个详尽的 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 个线程的池,与另一端的服务器完全相同。
在调试中,我可以看到服务器在 16384 字节的 OutputStream.write 中挂起 SEND_REQ。另一方面,jUnit 的服务器在读取流时卡住了,而 InputStream.read 只有 6 个字节。
我想到的第一件事是我没有关闭所有连接,因此缓冲区有任何泄漏。但是我已经用 TcpView 验证过了,没问题,当时只有一个连接:
知道为什么会发生这种情况吗?