linux so reuseport,linux – SO_ATTACH_REUSEPORT_CBPF套接字选项意外行为
我正在尝试使用来自两个应用程序的端口,并让每个应用程序从一组不同的IP地址接收数据包.为了实现这一点,我使用了SO_REUSEPORT和SO_ATTACH_REUSEPORT_CBPF套接字选项.我的代码如下:
parentfd = socket(AF_INET, SOCK_STREAM, 0);
if (parentfd < 0)
error( "ERROR opening socket");
struct sock_filter code[]={
{ 0x28, 0, 0, 0x0000000c },
{ 0x15, 0, 3, 0x00000800 },
{ 0x20, 0, 0, 0x0000001a },
{ 0x15, 2, 0, 0xc0a8ff01 },
{ 0x6, 0, 0, 0x00000000 },
{ 0x6, 0, 0, 0x00040000 },
{ 0x6, 0, 0, 0x00000001 },
};
struct sock_fprog bpf = {
.len = ARRAY_SIZE(code),
.filter = code,
};
if (setsockopt(parentfd, SOL_SOCKET, SO_REUSEPORT, (const void *)&optval,sizeof(optval)))
error("ERROR setting SO_REUSEPORT");
if (setsockopt(parentfd, SOL_SOCKET, SO_ATTACH_REUSEPORT_CBPF, (const void *)&bpf, sizeof(bpf)))
error("ERROR setting SO_ATTACH_REUSEPORT_CBPF);
我还有一个不同的进程只使用SO_REUSEPORT标志来侦听同一个端口.从IP 192.168.255.1的机器上运行echo 1234 | ncat 192.168.255.150 1234.基于我的过滤器,我希望第二个进程可以接收来自该IP地址的所有流量.然而,它都是第一个收到的.当我将过滤器更改为简单时:
struct sock_filter code [] = {
{0x6,0,0,0×00000001},
};
它按预期工作,所有数据包都由第二个进程接收.知道为什么会这样吗?
linux so reuseport,linux – SO_ATTACH_REUSEPORT_CBPF套接字选项意外行为相关推荐
- linux 套接字选项定义
2019独角兽企业重金招聘Python工程师标准>>> linux 套接字选项定义 2011-07-28 14:31 1.closesocket(一般不会立即关闭而经历TIME_WA ...
- Linux 套接字编程 套接字选项SO_BINDTODEVICE 绑定接口 示例
man socket(7)里对该选项的描述: SO_BINDTODEVICEBind this socket to a particular device like "eth0", ...
- LINUX 下tcp 和 udp 套接字收发缓冲区的大小决定规则 .
const int udp_recvbufsize = 384 * 1024 ; int result = ::setsockopt(m_hSocket, SOL_SOCKET, SO_RCVBUF, ...
- Linux原始网络编程,Linux操作系统网络编程 原始套接字 (1)
Linux操作系统网络编程--原始套接字 (1) http://soft.zdnet.com.cn/software_zone/2007/1020/568223.shtml 我们在前面已经学习过了网络 ...
- Linux网络编程:原始套接字的魔力【续】
如何从链路层直接发送数据帧 本来以为这部分都弄完了,结果有朋友反映说看了半天还是没看到如何从链路层直接发送数据.因为上一篇里面提到的是从链路层"收发"数据,结果只&q ...
- linux 服务器间通信,Linux 下的进程间通信:套接字和信号 | Linux 中国
原标题:Linux 下的进程间通信:套接字和信号 | Linux 中国 学习在 Linux 中进程是如何与其他进程进行同步的. -- Marty Kalin 本篇是 Linux 下(IPC)系列的第三 ...
- 【Linux网络编程】UDP 套接字编程
[Linux网络编程]UDP 套接字编程 [1]用户数据报协议(UDP) UDP是一个简单的传输层协议,不保证UDP数据报会到达其最终目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数 ...
- linux网络编程之SCTP套接字常用接口
转载地址: oracle开发帮助文档:http://docs.oracle.com/cd/E19253-01/819-7052/index.html SCTP 套接字接口 当 socket() 调用为 ...
- 套接字选项SO_LINGER
在说明套接字选项SO_LINGER之前,我们来先看一个问题.如果发送缓冲区中还有数据没有发送到对方协议栈,此时close发送端的socket会发生什么,下面代码给出答案. 服务端: #include ...
最新文章
- 征集 | 国家标准《信息安全技术 健康医疗信息安全指南》征求意见
- Winform中设置ZedGraph因设置小刻度导致的竖直虚线显示过多
- 科大星云诗社动态20210407
- java阻塞超时_JAVA防线程阻塞(超时控制)
- 基于xilinx vivado的XADC IP设置使用详解
- 存储器芯片巨头动态观察:三星、美光、SK海力士都在做什么?
- java定时器小程序_【微信小程序】使用setTimeout试试定时器
- SQL_Server_2008完全学习之第六章数据查询和管理
- Native Instruments Maschine 2 v2.14.7 WiN-MAC 节奏音乐制作软件含拓展
- 【Proteus仿真】基于STC15单片机简易数码管定时器时钟
- [APIO2014]序列分割
- 11年22部!漫威宇宙剧情与电影时间线梳理
- C语言中时间相关函数总结
- 如何修改Bootstrap Table中table-striped的颜色
- SQL:查询结果升序、降序排列
- 什么是入侵检测系统?有哪些分类?
- 【Java笔记】——将晦涩难懂的IO流形象化
- 1580_AURIX_TC275_SMU模块初步
- 关于Java为什么不推荐使用 import *导包这件小事
- linux运行lnk,LNK 文件扩展名: 它是什么以及如何打开它?
热门文章
- 解决:ODNC驱动程序管理器:未发现数据源名称并且未指定默认驱动器问题?
- MATLAB 多项式的四则运算与导数运算
- react集成react-pdf获取文件流预览下载pdf,展示电子签章
- LENOVO联想笔记本电脑 拯救者Y520-15IKBN(80Y5)原装Win10系统文件,恢复出厂OEM系统
- 风尚前端学习-网页HTML引入element-ui库
- linux shell random 3,Linux-Shell(三)
- arcsde service(esri_sde)服务启动后又停止
- 收集银行卡号前六位识别发卡行和卡的种类(不全)
- [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:qqs' d
- win10计算器需要新应用打开此calculator/calc