【问题标题】:How can a server send data back to client after it closed a connection?服务器关闭连接后如何将数据发送回客户端?
【发布时间】:2020-09-27 13:02:48
【问题描述】:

我的服务器主线程运行无限 while 循环以接受来自客户端的连接。服务器与一个客户端连接后,它会分配一个线程来处理客户端任务,然后关闭连接。任务完成后,我希望我分配的线程将数据发送回客户端。我怎样才能做到这一点?非常感谢。

  1. client1 --connect--> server --ask--> 线程 A 执行 client1 要求执行的任务
  2. 关闭连接
  3. 线程A完成任务,想发回结果>>>>如何?

【问题讨论】:

  • 你有理由相信这是可能的吗?您是否看过实现此功能的示例?
  • 好像我误解了一切。谢谢你提到这一点。这是不可能的。

标签: c


【解决方案1】:

在发回响应之前不要关闭连接。

当客户端打开连接时,实际上涉及两个通信通道。一种是客户端发给服务器的,第二种是服务器发给客户端的。当您在服务器端“接受”连接时,客户端通信通道的其余部分也已完全建立。

通过关闭连接,您会破坏两个通道。如果您的服务器尝试响应,则客户端已经收到关闭指标,并破坏了其接收您的数据的能力。

【讨论】:

  • 非常感谢。顺便问一下,完成任务后我必须关闭连接吗?如果我必须关闭,我可以在线程中关闭它(将文件描述符传递给线程)吗?对不起,如果这听起来很傻。不是很懂
猜你喜欢
  • 2013-04-05
  • 2016-07-12
  • 2019-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多