我有一个侦听并接受来自客户端的连接套接字服务器,它的工作原理如下只从IP地址的连接:服务器插座 - 接受白名单
... do some pre-processing (socket, binds, etc)
//listen to client
if (listen(sockfd, BACKLOG) == -1) {
perror("listen");
exit(1);
}
printf("server: waiting for connections...\n");
while(1) { // main accept() loop
sin_size = sizeof client_addr;
new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size);
if (new_fd == -1) {
perror("accept");
continue;
}
//do something .....
.....
}
我怎样才能限制服务器,所以其只接受来自特定IP地址的连接?举例来说,我可以创建一个包含IP白名单地址接受,按以下格式的文本文件:
202.168.2.5 - 202.168.2.127
92.104.3.1 - 92.104.4.254
//等
所以基本上我想拒绝所有没有包含在白名单中的IP地址的连接。如果套接字库API不支持,我想先接受连接,然后立即关闭套接字,如果peeraddress不在白名单中。但是,如何执行此操作,如何检查特定IP地址是否在我的白名单中指定的范围内?任何例子,将不胜感激。
你没有提到操作系统,但是如果你在* nix系统上运行,你可以简单地使用TCP Wrappers并让它为你完成工作。 – 2012-03-14 05:59:51