gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 12:28:11 25 4
gpt4 key购买 nike

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

连接的客户端:

[1] 客户 1

[2] 客户 2

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

最佳答案

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

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

    fcntl(sock, F_SETFL, O_NONBLOCK);

  3. 绑定(bind)并设置监听

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

记住!始终检查返回值。否则你可能会有麻烦。还要检查 IP man pages用于 Linux 网络。

关于c - 将连接的客户端添加到列表 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44031553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com