将连接的客户端添加到列表 - C

Adding Connected Clients To A List - C

我已经创建了一个客户端和服务器,都是用 C 语言编写的,现在正在考虑编辑服务器以处理多个客户端。我的问题是:有什么方法可以将传入的 connections/connected 客户端添加到可以打印到终端的列表中?例如:

连接的客户端:

[1] 客户端 1

[2] 客户端 2

我为此使用原始套接字。服务器 Linux 在 Linux 上使用原始套接字,客户端 运行 在 windows 上使用 WinSock2,到目前为止似乎 运行 很好。

答案在这里:是的,您实际上可以做到这一点,只需按照以下步骤操作即可:

  1. 为服务器创建套接字
  2. 使用以下代码将其设置为非阻塞模式:

    fcntl(袜子,F_SETFL,O_NONBLOCK);

  3. 绑定并设置监听

  4. 接受套接字(检查 -1 和 errno(如果 -1 和 errno 设置为 EWOULDBLOCK,则没有客户端想要连接到您的服务器))
  5. 将它们设置为非阻塞模式。
  6. 存储sockaddr*(sockaddr_in或sockaddr_in6)和客户端socket
  7. 重复步骤 4 - 6
  8. 现在有多个客户端连接到您的服务器。
  9. 检查何时写入或从客户端读取 -1 和 errno(用于断开连接检测)

记住!始终检查 RETURN 值。否则你可能会有麻烦。还要检查 IP man pages 的 linux 网络。