C udp回显服务器中有多个客户端

C udp回显服务器中有多个客户端,c,udp,udpclient,C,Udp,Udpclient,我有一个UDP echo客户端和服务器程序。当我尝试连接多个客户端以使用不同的计算机连接到服务器时,我得到了一个积极的响应,即我能够将我的服务器连接到多个客户端 所以,我的问题是,当我中断ctrl+c以中断服务器时,我想打印当时与服务器关联的所有客户端的ip地址。 我该怎么做?我知道当一个客户端连接到服务器时如何打印IP地址,但如何为多个客户端打印?没有任何内置机制可以执行此操作。UDP是无连接的,所以套接字不会“记住”与谁通信 要打印服务器与之通信的所有客户端,您需要自己跟踪它们。您可能需要一

我有一个UDP echo客户端和服务器程序。当我尝试连接多个客户端以使用不同的计算机连接到服务器时,我得到了一个积极的响应,即我能够将我的服务器连接到多个客户端

所以,我的问题是,当我中断ctrl+c以中断服务器时,我想打印当时与服务器关联的所有客户端的ip地址。
我该怎么做?我知道当一个客户端连接到服务器时如何打印IP地址,但如何为多个客户端打印?

没有任何内置机制可以执行此操作。UDP是无连接的,所以套接字不会“记住”与谁通信

要打印服务器与之通信的所有客户端,您需要自己跟踪它们。您可能需要一个集合(如果您不想自己构建集合,可以在C中找到一些集合的开源实现),或者甚至一个简单的链表也可以,具体取决于您的情况。在每次从
接收
后,将客户端添加到集合/列表中。处理完每个请求后,从集合/列表中删除客户端


然后,您需要设置一个处理程序来对^C作出反应。在该处理程序中,您只需打印集合/列表。

您想要的东西有一些问题;首先,将
CTRL-C
重载以执行它不应该执行的操作将使您的程序看起来非常奇怪,您将如何取消/终止该程序?其次,由于它是UDP,您实际上没有来自客户端的连接,但是您仍然可以保留与服务器通信的所有客户端的列表。至于捕获
CTRL-C
,请搜索术语signal和break.UDP是无连接的。UDP中没有“客户端连接到服务器”的概念。您可以在每次UDP通信时打印/存储每个客户端IP,任何UDP消息都包含发送方的信息(IP+端口)。如果使用
recvfom
,则可以使用这些信息填充参数。见: