我们知道使用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然后我们可以使用此方法来节省一些资源。
编辑:
正如人们建议防火墙在那里,是的它就在那里,但它将适用于下面的例子
We are running
N servers on a machine each server should exclude some IP addresses . Then how to use firewall here ?
答案 0 :(得分:1)
在接受连接之前是否有办法获取客户端地址
没有
至少不是从客户的角度来看。
我们不希望客户来自地址i.j.k.l到i.j.l.m
对于此类用例,防火墙系统就在附近。