gpt4 book ai didi

linux - 如何找到要连接到监听套接字的客户端的源 IP 和端口?

转载 作者:可可西里 更新时间:2023-11-01 02:40:52 24 4
gpt4 key购买 nike

我在 Linux 上使用一个 tcp 套接字来监听传入的 tcp 连接。套接字是阻塞类型。

我想在调用 accept() 之前找出哪个客户端试图连接到我的套接字。更具体地说,我想知道源 IP 和端口。

现在,我做了一些阅读,发现有人说这是不可能的,因为源 IP 地址(还)未知。我不明白这一点。如果客户端通知服务器它想要连接,那么它一定发送了一个 SYN 数据包,其中包含我想要的信息,对吧?

(来源) Obtaining the source IP and port of an INADDR_ANY client socket before the TCP three-way handshake?

也许他们指的是客户端。

作为服务器,我可以通过 select() 或 poll() 文件描述符来知道有多少客户端想要连接,为什么我不能在 accept() 连接之前获取他们的 ip 地址和端口?

不好意思,我的网络知识不是很丰富。

谢谢。

最佳答案

accept 为已建立的新连接返回一个新的套接字 ID。如果 accept 失败,则无论如何都没有连接。在成功接受新套接字的情况下,accept 您可以使用 getpeername 来确定客户端详细信息。

selectpoll 只会通知套接字上的事件,不会提供更多详细信息。您需要依赖accept 来检查连接是否成功

关于linux - 如何找到要连接到监听套接字的客户端的源 IP 和端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30474787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com