c - 如何在完全下载之前丢弃数据包

标签 c sockets tcp

我正在使用 C 创建一个用于网络过滤的个人应用程序。我已经知道您可以使用以下代码记录和分析下载的数据包的信息:

tcpPacket = recvfrom(raw_socket , buffer , 65536 , 0 , &serverAddress , &serverAddressSize);

但这需要先下载tcp数据包。我需要的是,过滤器甚至在下载之前就将被执行,假设它检查源 IP,并基于此,它接受或拒绝它。

注意:是的,我知道 iptables,但我不想使用它,因为我想学习如何使用原始套接字来做到这一点。

最佳答案

在面向数据包的网络(如 TCP/IP)中,每个数据包都包含地址信息和实际负载。

因此,根据数据包中的数据,在下载数据包之前删除数据包是没有意义的。

如果您可以在数据包中停止实际的(硬件)接收器,这也许是可以想象的,但我不认为任何“正常”网络硬件或 API 都会公开此类功能。

关于c - 如何在完全下载之前丢弃数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26589881/

相关文章:

c - 如何将 libc_nano 与 Clang 一起使用?

c - 如何使用 fwrite() 写入一个 int

c - 我是否要转换 malloc 的结果?

c++ - C/C++ union 和未定义行为

sockets - 何时关闭套接字 tcp

C# .NET 服务器轮询多个连接 - 有更好的方法吗?

c - 循环中 char* realloc 的错误

java - Java 网络程序中通过套接字发送的字符串中的最后几个字符有时会丢失

C# Modbus/tcp - 挂起连接

Ubuntu,Docker - proxyconnect tcp : tls: oversized record received with length 20527