【发布时间】:2020-09-19 14:22:38
【问题描述】:
我正在用 C (LINUX) 制作服务器/客户端程序。我在一个文件夹中有 4 个程序。一个clientUNIX、一个clientTCP、一个serverUNIX和一个serverTCP。他们都完美地工作。现在,我的目标是制作一个支持两个客户端的服务器。
对我来说,最简单的方法是启动一个新程序 (serverTCPUNIX),它执行以下操作:
- 在 main() 中,创建一个线程来处理 TCP 客户端和另一个线程来处理 UNIX 客户端。
有没有更好的方法来实现这一点?因为这样,我将有 2 个线程循环通过客户端。我想知道我是否可以只有 1 个线程和 1 个循环同时支持这两种类型的客户端。
谢谢。
【问题讨论】:
-
欢迎来到 SO。确定您是否只能使用 1 个线程,我们需要查看您当前服务器的外观。他们已经可以用 1 个线程处理多个 TCP 连接了吗?
-
可以。服务器进入一个循环,接受客户端连接,并创建线程来处理它们。
-
这意味着当您谈论“只有 1 个线程”时,您实际上是指“1 个控制线程和许多其他线程”,对吗?
-
是的,你是对的。我的意思是 1 个线程接受连接。目前,我有 1 个线程只接受 TCP 客户端连接,另一个只接受 UNIX 客户端连接。除此之外,我为每个客户提供 1 个线程来处理它们。我想要的是只有 1 个线程可以同时接受 TCP 连接和 UNIX 连接。可能会用到select(),但是我不是很明白它的用途。
标签: c sockets unix server client