在Linux中,如果我们recv从一个线程调用阻塞并从另一个线程关闭同一个套接字,recv则不会退出。
recv
为什么?
检查是否已关闭套接字的所有文件描述符。如果在“远程”端有任何打开的端口(假设这是您尝试关闭的端口),则“ 对等方尚未执行有序的关闭 ”。
如果仍然不起作用,请shutdown(sock, SHUT_RDWR)在远端调用,无论引用计数如何,都将关闭套接字。
shutdown(sock, SHUT_RDWR)