【发布时间】:2016-07-31 16:34:11
【问题描述】:
我有一个标准的客户端服务器情况。客户端连接到服务器,服务器使用select()(或类似名称)管理多个客户端连接。一切都使用 POSIX 系统级网络 API。
有时服务器需要关闭连接。我希望服务器能够在关闭套接字之前向客户端发送消息,以告知客户端连接被关闭的原因。
最好的方法是什么?
直接的方法是让服务器写入消息然后关闭 (close()),但我认为这是有问题的,因为客户端可能会由于连接已关闭而收到写入错误由服务器,在客户端有机会读取服务器写入的最终消息之前。
是这样吗,还是我可以确定客户端在读取所有内容之前不会收到写入错误?
有没有更好的方法?
如果可能,我更喜欢仅基于 POSIX 规范的解决方案。
【问题讨论】: