获取传入连接的源IP地址

时间:2015-04-21 17:04:55

标签: c++ c sockets tcp

我们知道使用3次握手协议建立TCP连接。

我们可以通过这两种方式获得对等名称。

1. a) connfd = accept(sfd,&addr,&addrlen);
   b) int getpeername(connfd,&addr,&addrlen); 
2. a) connfd = accept(sfd,&addr,&addrlen);
      here struct addr has information about client 

假设我们使用了select over socket descriptor(s)。然后,如果某人请求连接,则必须设置套接字描述符。所以我们现在可以使用上面的方法获取客户端地址。

有没有办法在接受连接之前获取客户端地址 因为我们已经知道有些人要求这种联系。

应用:
假设我们不希望客户端从地址i.j.k.l转到i.j.l.m然后我们可以使用此方法来节省一些资源。

操作系统:Ubuntu
P /语言:C / C ++。

编辑: 正如人们建议防火墙在那里,是的它就在那里,但它将适用于下面的例子 We are running N servers on a machine each server should exclude some IP addresses . Then how to use firewall here ?

1 个答案:

答案 0 :(得分:1)

  

在接受连接之前是否有办法获取客户端地址

没有

至少不是从客户的角度来看。

  

我们不希望客户来自地址i.j.k.l到i.j.l.m

对于此类用例,防火墙系统就在附近。