C 客户端端口号

C 客户端端口号,c,network-programming,C,Network Programming,我想知道如何使用C找出客户端当前正在侦听的端口。我想知道源端口是什么,而不是目标端口 提前谢谢 不知道你的意思。客户端不听,服务器听。如果您正在讨论如何扫描所有打开的端口,那么您可能需要端口扫描仪。有很多可用的源代码,但我绝对不建议您使用其中的一个,即使启用了多线程,它们通常也很慢。为什么?有nmap:套接字地址结构应该由connect系统调用填充。在成功返回该调用后检查它。根据您想要的内容(我现在猜不出来),您需要调用getsockname或getpeername。我以为他们会监听他们查询操作

我想知道如何使用C找出客户端当前正在侦听的端口。我想知道源端口是什么,而不是目标端口


提前谢谢

不知道你的意思。客户端不听,服务器听。

如果您正在讨论如何扫描所有打开的端口,那么您可能需要端口扫描仪。有很多可用的源代码,但我绝对不建议您使用其中的一个,即使启用了多线程,它们通常也很慢。为什么?有nmap:

套接字地址结构应该由connect系统调用填充。在成功返回该调用后检查它。

根据您想要的内容(我现在猜不出来),您需要调用getsockname或getpeername。

我以为他们会监听他们查询操作系统的开放端口号。似乎是这样的。。。此外,出于某种原因,torrent服务器要求您发送客户端正在侦听的端口。@Cenoc:这是因为bittorrent客户端还充当群中其他计算机连接的服务器,即它接收传入连接。P2P混淆了通常的客户端-服务器划分,但当谈到单个TCP连接时,说客户端意味着是谁发起了连接。对,但它仍然作为客户端连接,所以我的问题是,在这种情况下,我如何找到要发送的源端口?它将隐藏在bittorrent客户端的选项中。选项>首选项>主线客户端中的连接。如果你问bittorrent代码如何知道发送哪个端口,那么要么它自己选择一个端口,在这种情况下它知道自己选择了什么,要么它可以在套接字绑定后调用getsockname。对不起,它是sockaddr_in结构的一部分,意思是internet,在Berkly风格的sockets API提到结构sockaddr*的地方使用它。所以通常当你调用bind时,你会指定端口,这就是你调用listen时监听的端口。Steve Jessop给了我我一直在寻找的答案,我现在不知道该怎么处理这个问题。。。