c++ - 如何在c linux中通过服务器处理多个套接字客户端

标签 c++ multithreading sockets

我正在尝试通过 Internet 开发服务器到多客户端应用程序。其中客户端始终连接(假设 10)。连接的客户端摘要将显示在服务器端。从该客户端列表中,我将选择特定客户端并发送一些命令来执行特定任务。之后客户将向我发送相关输出。

如果任何客户端由于某种原因断开连接,客户端列表应该更新。

我正在尝试使用线程连接多个客户端。只有当我开发回声服务器时它才能正常工作。我试图从服务器端处理客户端,但由于接受多个客户端的无限循环,我坚持处理特定的客户端和线程。

我怎样才能解决这个问题......我可以使用任何好的解决方案或想法?还是我使用了错误的逻辑?

这就像通过互联网连接的不同 pc 之间的 IPC 机制。

最佳答案

由于您使用的是 Linux,因此您可以使用一些异步框架(事件循环):

这些库的一般理念是它们创建一个事件循环,就像 GUI 框架一样,由用户注册回调以处理与网络连接相关的事件(接受、断开连接、数据读取、数据写入。 ..) 或一般的 I/O。

这些库效率很高,通常基于epoll api,并隐藏了许多实现细节,因此它们相对易于使用。

关于c++ - 如何在c linux中通过服务器处理多个套接字客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21275980/

相关文章:

c++ - 当指定文件的路径包含空格时如何用QProcess启动explorer.exe?

java - Component.setBounds 调用 Component.repaint?

java - 4个线程或8个线程执行时间相同

c# - .Net Socket 增强以支持 ACK 和聊天?

C++ NCurses 如何获取当前光标位置?

c++ - 如果我在使用新程序和结束程序分配数据后没有调用 delete 运算符,会发生什么情况?

c++ - 使用树的序列化和为每个子树生成唯一 ID 进行树匹配

Java工作线程,终止条件

python - 如何在不使用循环的情况下将 IPv4 地址从字节转换为字符串?

c++ - 连接到外部 IP 失败