【问题标题】:Can a C program be both a server and client at the same time?C 程序可以同时是服务器和客户端吗?
【发布时间】:2020-07-07 16:07:02
【问题描述】:

我是一名学习 C 并且刚刚开始阅读有关套接字的内容。

我想知道是否可以将程序同时编码为服务器和客户端。例如,一个程序一开始是一个服务器,但如果它想连接到另一个服务器,它可以并行启动一个客户端来连接到其他程序的服务器,同时保持它的服务器状态以供其他人连接。

如果是这样,那该怎么做?使用不同的流程?

谢谢你们!

【问题讨论】:

  • 是的,一个进程可以同时托管任意数量(在合理范围内)的服务器和/或客户端实例。
  • 谢谢@500-InternalServerError,那么就不需要分叉了吗?一个相同的进程可以同时托管两者?如果进程需要等待服务器或客户端发送一些东西怎么办?
  • 您通常会采用某种线程方案,以便不是整个进程而是只有一个特定线程在等待来自特定连接的数据。
  • 没有客户端/服务器之类的东西,只有套接字。所以你可以在一个过程中做任何你想做的事情。
  • 对不起,没有套接字服务器或客户端之类的东西吗?我很困惑,因为我读到的所有关于套接字的信息都谈到了客户端和服务器......

标签: c sockets


【解决方案1】:

这是“线程”的用例之一,其中有多个执行实例同时执行不同的作业。 https://simple.m.wikipedia.org/wiki/Thread_(computer_science)

【讨论】:

    【解决方案2】:

    是的,可以。

    没有什么能阻止这一切。

    如果您想管理来自同一进程的多个套接字,您可能会发现 poll 函数很有用,或者在 Windows 上使用 select。 (select 也适用于 Linux,但我认为 poll 更好)

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多