我的网络服务器应用在C中书写,听众必须使用INADDR_。 纽约市通过安装的东道国的任何IP地址接收连接。
我需要确定哪一个服务器的IP地址是客户在建立链接时使用的,实际上,我需要知道它们是否通过反馈地址127.0.0.1连接。
部分代码样本如下(如果能够帮助的话,我可以全文):
static struct sockaddr_in serverAddress;
serverAddress.sin_family = AF_INET;
serverAddress.sin_addr.s_addr = INADDR_ANY;
serverAddress.sin_port = htons(port);
bind(listener, (struct sockaddr *) &serverAddress, sizeof(serverAddress));
listen(listener, CONNECTION_BACKLOG);
SOCKET socketfd;
static struct sockaddr_in clientAddress;
...
socketfd = accept(listener, (struct sockaddr *) &clientAddress, &length);
解决我的具体问题(如果任何人需要的话)如下:
int isLocalConnection(int socket){
struct sockaddr_in sa;
int sa_len = sizeof(sa);
if (getsockname(socket, &sa, &sa_len) == -1) {
return 0;
}
// Local access means any IP in the 127.x.x.x range
return (sa.sin_addr.s_addr & 0xff) == 127;
}