+ -
当前位置:首页 → 问答吧 → socket 阻塞read时,做close无返回 问题

socket 阻塞read时,做close无返回 问题

时间:2010-08-24

来源:互联网

服务端和客户都都为 阻塞socket.

服务端一个线程 阻塞read, 另一个线程阻塞write.
客户端阻塞read.


当服务端主线程阻塞read时, 另一个线程write完成后 做close后,

奇怪的是 服务端和客户端阻塞的 read 都没有返回,一直阻塞,
按我理解, 至少客户端 read应该会返回。 ???

希望各位大虾解疑, 谢谢!

作者: tonyswe   发布时间: 2010-08-24

再说明白一点。 linux环境.

客户端已经长连接到服务端,  客户端发送查询请求, 发送完后,read接收数据。
服务端阻塞read接收客户端 查询数据请求, read返回后,   新创建子线程处理查询数据, 继续阻塞read.
子线程查询数据并write发送给客户端, 发送完后close, 子线程退出。

关键是发送完后close后, 客户端和服务端 都还阻塞在read上。

作者: tonyswe   发布时间: 2010-08-24