我正在编写 C++ 的多客户端聊天程序,我有一些我无法解决的问题。
1.当有用户进来时,服务器将Accept()
客户端,然后分配一个socket id给客户端。当客户端断开连接时,另一个客户端进来,在服务器Accept()
它之后,客户端将获得另一个套接字ID。我想重用套接字 id,但是 Accept()
会给出比以前客户端的套接字 id 更大的套接字 id。那么,如何将套接字 id 分配给每个客户端?
2.我使用select(fdmax + 1, &read_fds, NULL, NULL, NULL)
andfor(i = 0; i <= fdmax; i++)
扫描每个存在的连接,客户端可以使用tenlet连接到我的服务器。除了聊天之外,客户端还可以在我的服务器上运行命令(如ls
, cat
),我的服务器将使用fork()
并将dup()
结果发送给客户端。这里有一个问题,如果用户分配一个新PATH
的环境变量,PATH
其他客户端的环境变量也会改变。我该如何避免这种情况,每个客户端都应该有自己的默认PATH
值?