将连接的客户端添加到列表 - C
Adding Connected Clients To A List - C
我已经创建了一个客户端和服务器,都是用 C 语言编写的,现在正在考虑编辑服务器以处理多个客户端。我的问题是:有什么方法可以将传入的 connections/connected 客户端添加到可以打印到终端的列表中?例如:
连接的客户端:
[1] 客户端 1
[2] 客户端 2
我为此使用原始套接字。服务器 Linux 在 Linux 上使用原始套接字,客户端 运行 在 windows 上使用 WinSock2,到目前为止似乎 运行 很好。
答案在这里:是的,您实际上可以做到这一点,只需按照以下步骤操作即可:
- 为服务器创建套接字
使用以下代码将其设置为非阻塞模式:
fcntl(袜子,F_SETFL,O_NONBLOCK);
绑定并设置监听
- 接受套接字(检查 -1 和 errno(如果 -1 和 errno 设置为 EWOULDBLOCK,则没有客户端想要连接到您的服务器))
- 将它们设置为非阻塞模式。
- 存储sockaddr*(sockaddr_in或sockaddr_in6)和客户端socket
- 重复步骤 4 - 6
- 现在有多个客户端连接到您的服务器。
- 检查何时写入或从客户端读取 -1 和 errno(用于断开连接检测)
记住!始终检查 RETURN 值。否则你可能会有麻烦。还要检查 IP man pages 的 linux 网络。
我已经创建了一个客户端和服务器,都是用 C 语言编写的,现在正在考虑编辑服务器以处理多个客户端。我的问题是:有什么方法可以将传入的 connections/connected 客户端添加到可以打印到终端的列表中?例如:
连接的客户端:
[1] 客户端 1
[2] 客户端 2
我为此使用原始套接字。服务器 Linux 在 Linux 上使用原始套接字,客户端 运行 在 windows 上使用 WinSock2,到目前为止似乎 运行 很好。
答案在这里:是的,您实际上可以做到这一点,只需按照以下步骤操作即可:
- 为服务器创建套接字
使用以下代码将其设置为非阻塞模式:
fcntl(袜子,F_SETFL,O_NONBLOCK);
绑定并设置监听
- 接受套接字(检查 -1 和 errno(如果 -1 和 errno 设置为 EWOULDBLOCK,则没有客户端想要连接到您的服务器))
- 将它们设置为非阻塞模式。
- 存储sockaddr*(sockaddr_in或sockaddr_in6)和客户端socket
- 重复步骤 4 - 6
- 现在有多个客户端连接到您的服务器。
- 检查何时写入或从客户端读取 -1 和 errno(用于断开连接检测)
记住!始终检查 RETURN 值。否则你可能会有麻烦。还要检查 IP man pages 的 linux 网络。