sockets - 如何确定是否已完成从UNIX套接字的read()处理?

标签 sockets unix

我一直在阅读read(2)的手册页,根据手册页,错误时read(2)的返回值是-1,EOF上的返回值是0,读字节数> 0。

我如何知道客户机上的write(2)何时完成?

我问是因为我正在编写服务器和客户端以对其进行测试,但是当我第一次读取(2)并循环检查更多内容时,read(2)会阻塞并等待来自客户端的另一个write(2) (不会出现,因为我的客户端只有一个write(2))。

如果我只是缺少一些简单的东西,可以有人指出它还是为我提供良好的引用?

最佳答案

完成后,客户端需要关闭套接字。客户端关闭套接字后,服务器将收到EOF消息。如果客户端使套接字保持打开状态,但从未对其进行写操作,则服务器将永远等待另一条消息断开。

关于sockets - 如何确定是否已完成从UNIX套接字的read()处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2343225/

相关文章:

Java : Opening client socket

java - 如何检查一个类的特定实例是否在java中运行?

linux - 套接字编程中的RAW套接字是什么

linux - 如何在 Unix 中的分隔符后添加换行符?

c++ - 在 C++ 中执行 unix 命令

linux - 记录控制台的所有输出

与 Web 服务器通信的 Python 应用程序?想法?

c - 原始套接字接收自身发送的消息

c - 建议的阅读顺序和其他问题

linux - 使用 awk 和行首正则表达式获取段落