c - 客户端断开连接后是否可以从客户端套接字读取数据?

标签 c sockets ubuntu server

我正在尝试编写一个 C 语言服务器程序,该程序将能够处理写得不好的客户端程序。客户端向服务器发送一堆命令,然后关闭套接字。服务器执行每个命令后,应该根据命令是否失败向客户端发送 0 或 1。

如果我不尝试在每个命令后向客户端发送一个字节,则一切都很好,并且在客户端关闭套接字后我可以继续在服务器端读取命令。但是,如果我尝试写入 1 个字节,则在从客户端读取 1 个命令后,我将无法再读取命令(连接由对等方重置)。

有办法解决这个问题吗?比如,能够写入和读取所有命令?

最佳答案

在这种情况下,您需要知道客户端在发送另一个命令之前是否等待您对每个命令的答复。 在典型的客户端-服务器连接中,客户端开始通信。由于您的客户端正在发送一堆命令,因此有两种可能性:

  • 在操作结束时,您的套接字返回结果将是 OK 或 NOK。
  • 对于客户发送的每条消息,您的返回结果将是 OK 或 NOK。

此外,我建议您发送任何跟踪信息,以便我们评估哪种解决方案更适合您的情况。

关于c - 客户端断开连接后是否可以从客户端套接字读取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30895593/

相关文章:

计算C程序中的空行数

c - 查找 EF 上下文的正确名称

linux-kernel - 创建简单的内核模块

javascript - 如何防止页面重定向时与 socket.io 的多个连接?

java - 套接字连接超时 : where is the specification?

ubuntu - 无法使用 CodeDeploy 部署代码

c - 多线程 - 比单线程慢

java - SSL 套接字获取流量类在 java 中不匹配

Ubuntu 20.04 中的 java 版本和 javac 版本不同

ubuntu - 如何在 VSCode + Vim + Ubuntu 中使用其他语言(例如俄语)而不自行更改布局?