1

我正在用 C 编写一个客户端服务器程序。问题:当服务器正在侦听和接受新连接时,它还存储了它所连接的 IP。现在,如果我们在仍在运行的服务器程序窗口中输入命令说 LIST,那么它应该显示它连接到的 IP 列表?我正在为每个客户端使用 Select() 函数。

简而言之,如何在回答传入连接时接受来自键盘的输入?

4

2 回答 2

2

只需STDIN_FILENO在传递给select(2). 然后,如果输入可用于读取它,则从中读取并处理命令;否则,照常处理套接字。

或者,您可以运行一个单独的线程来处理用户输入,但鉴于您已经进行了select调用,继续使用它可能更容易。

于 2013-09-22T03:32:17.213 回答
1

您可能想查看 DJ Bernstein 的 tcpserver(参见http://cr.yp.to/ucspi-tcp/tcpserver.html)。基本上,您可以简单地在 tcpserver 下运行您的程序,tcpserver 将处理所有事情,包括设置套接字、列出您正在使用的任何端口上的传入连接等。当传入连接到达您指定的端口时,tcpserver将生成程序的一个实例,并将来自客户端的传入信息通过管道传输到程序的 STDIN,并将来自程序的 STDOUT 的传出信息通过管道传输回客户端。这样,您可以专注于程序的核心逻辑(并简单地读取/写入 stdout/stdin),并让 tcpserver 处理所有繁重的工作,例如套接字等,并且您可以接受多个同时传入的连接方法。

就知道当前连接的客户端 IP 而言 - 这可以在服务器运行时使用 netstat 在命令行中完成。

于 2013-09-22T10:42:52.000 回答