【发布时间】:2014-12-03 08:29:37
【问题描述】:
我有一个 UDP 回显客户端和服务器程序。当我尝试连接多个客户端以使用不同的计算机连接到服务器时,我得到了肯定的响应,即我能够将我的服务器与多个客户端连接。
所以,我的问题是,当我打破 ctrl+c 来打破服务器时,我想打印当时与服务器关联的所有客户端的 IP 地址。 我该怎么做?我知道如何在单个客户端连接到服务器时打印 IP 地址,但是如何为多个客户端打印?
【问题讨论】:
-
你想要的有几个问题;首先“重载”
CTRL-C去做一些它不应该做的事情会让你的程序看起来很奇怪,你将如何取消/杀死程序?其次,由于它是 UDP,您实际上并没有来自客户端的 连接,但您仍然可以保留与服务器通信的所有客户端的列表。至于捕捉CTRL-C,请搜索术语signal和break。 -
UDP 是无连接的。 UDP 中没有“客户端连接到服务器”的概念。您可以在每次 UDP 通信时打印/存储每个客户端 IP,任何 UDP 消息都包含发送者的信息(IP+端口)。如果你使用
recvfom,有参数可以填写这些信息。见:linux.die.net/man/2/recv