2015-01-16 26 views
0

我不是指什么getsockname返回,这是本地接口的地址,我的意思是在底层IP数据包中的目标IP(有些情况下,这两个不相等,例如在透明代理场景中)。我如何从tcp套接字得到目标ip,并且接受?

我不想使用原始套接字来做到这一点...

所以我想知道,如果有一些聪明的技巧,找出出现在包中的目的IP ...

提前致谢。

回答

1

getsockname()返回SYN的目标IP地址。由于weak end system model(也讨论了here),这可能是也可能不是通过其接收SYN的NIC的地址。

0

我只是找到了答案,我的问题,选项SO_ORIGINAL_DST:

getsockopt(socket, SOL_IP, SO_ORIGINAL_DST, &destAddr, &destAddrLen); 

希望这可以帮助别人那里!

+0

不需要。这在存在NAT设备的情况下检索原始目标*。与您要求的不同。 – EJP