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