有没有办法只关闭TCP套接字的“一端”来干净地指示连接的一端写完了连接? (就像你在每个Unix管道教程中都使用过一个管道一样。)或者我应该使用一些带内解决方案,比如哨兵价值还是其他一些?
答案 0 :(得分:5)
您可以使用方法的第二个参数关闭套接字以进行读取或写入:
shutdown(sock, SHUT_RD)
shutdown(sock, SHUT_WR)
如果服务器正在执行写操作,并执行shutdown()以进行写操作,则客户端在尝试读取时(而不是阻塞并等待数据到达)应该获得文件结束。但它仍然可以写入套接字。