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

时间:2017-05-17 17:39:16

标签: c linux windows sockets winsock

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

已连接的客户:

[1]客户1

[2]客户2

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

1 个答案:

答案 0 :(得分:0)

以下是答案:是的,您可以执行此操作,只需按照以下步骤操作:

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

    fcntl(袜子,F_SETFL,O_NONBLOCK);

  3. 绑定并设置监听

  4. 接受套接字(检查-1和errno(如果-1和errno设置为EWOULDBLOCK,则没有客户端想要连接到您的服务器))
  5. 将它们设置为NONBLOCKING模式。
  6. 存储sockaddr *(sockaddr_in或sockaddr_in6)和客户端套接字
  7. 重复步骤4 - 6
  8. 现在有多个客户端连接到您的服务器。
  9. 检查从客户端写入或读取-1和errno(用于解除检测)
  10. 请记住!始终检查返回值。否则你可能会遇到麻烦。另请查看IP man pages以获取Linux网络。