kay*_*kay 5 c sockets linux ddos
嗨,当您运行TCP服务器(用C语言编写,使用Berkeley套接字API)时,是否可以在实际接受连接之前读取客户端的IP地址/端口?
据我所知,如果您不想因为其IP地址而与给定客户端通信,则必须首先accept
进行连接shutdown
.
伪代码(我正在寻找peek
和refuse
方法):
int serverfd = listen(...);
for(;;) {
struct sockaddr_in clientAddr;
peek(serverfd, &clientAddr, sizeof(clientAddr));
if(isLegit(&clientAddr)) {
int clientfd = accept(serverfd, &clientAddr, sizeof(clientAddr));
handleClient(clientfd);
} else {
refuse(serverfd, &clientAddr, sizeof(clientAddr));
}
}
Run Code Online (Sandbox Code Playgroud)
我认为你想要做的就是阻止 TCP 协商在与特定 IP 匹配时发生。据我所知,这在套接字层是不可能的。TCP 协商将会发生,当您接受套接字时,协商已经发生。
从技术上讲,您可能可以以某种方式查看该状态信息,但是,它不会执行您期望的操作。接受套接字是内核(已经完成工作)和想要读取数据的程序之间的接口。最简单的方法是接受套接字,如果不需要,则启动它。
如果你想从一开始就阻止 TCP 协商的发生,你需要使用 iptables。
归档时间: |
|
查看次数: |
1784 次 |
最近记录: |