我的应用程序在CentOS 5.5上运行.我正在使用原始套接字发送数据:
sd = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
if (sd < 0) {
// Error
}
const int opt_on = 1;
rc = setsockopt(m_SocketDescriptor, IPPROTO_IP, IP_HDRINCL, &opt_on, sizeof(opt_on));
if (rc < 0) {
close(sd);
// Error
}
struct sockaddr_in sin;
memset(&sin, 0, sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = my_ip_address;
if (sendto(m_SocketDescriptor, DataBuffer, (size_t)TotalSize, 0, (struct sockaddr *)&sin, sizeof(struct sockaddr)) < 0) {
close(sd);
// Error
}
Run Code Online (Sandbox Code Playgroud)
如何将此套接字绑定到特定的网络接口(例如eth1)?
在我的Jenkins pipleline上,我对两者进行了单元测试:调试和发布配置.每个测试配置都会生成单独的JUnit XML结果文件.两者上的测试名称:调试和发布配置相同.目前,我使用以下junit命令来显示测试结果:
junit allowEmptyResults: true, healthScaleFactor: 0.0, keepLongStdio: true, testResults: 'Test-Dir/Artifacts/test_xml_reports_*/*.xml'
问题是在Jenkins UI上:调试和发布测试结果一起显示,并且无法知道哪个测试(来自调试或发布配置)失败.是否可以单独显示调试和发布测试结果?如果是的话,我该怎么做?
我需要在RPM文件中创建以下符号链接
/bin/ln -sf libcrypto.so.0.9.8e /lib/libcrypto.so.0.9.8
/bin/ln -sf libssl.so.0.9.8e /lib/libssl.so.0.9.8
Run Code Online (Sandbox Code Playgroud)
在我的RPM spec文件中:
%files
%defattr(-,root,root)
/lib/libcrypto.so.0.9.8
/lib/libssl.so.0.9.8
<other files...>
%install
/bin/ln -sf libcrypto.so.0.9.8e /lib/libcrypto.so.0.9.8
/bin/ln -sf libssl.so.0.9.8e /lib/libssl.so.0.9.8
Run Code Online (Sandbox Code Playgroud)
/lib/libcrypto.so.0.9.8e和/lib/libssl.so.0.9.8e存在于我的电脑上,但是当我尝试安装我的RPM时,我收到一个错误:
libcrypto.so.0.9.8 is needed by my-test-rpm-1.el5.i686
libssl.so.0.9.8 is needed by my-test-rpm-1.el5.i686
Run Code Online (Sandbox Code Playgroud)
怎么了?作为RPM安装的一部分,我需要做些什么才能创建符号链接?
谢谢
我正在尝试从CentOS 5.5上的特定网络接口接收组播数据
sd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(1234);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
bind(sd, (sockaddr*)&addr, sizeof(sockaddr_in));
setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, "eth0", 5);
Run Code Online (Sandbox Code Playgroud)
但是我收到了来自所有接口的数据包.
怎么了?
我需要从Linux机器上的所有网络接口捕获数据包.为了做到这一点,我打算使用pcap_open_live()API并将"any"作为设备参数传递.
我有不同类型的端口:以太网端口(比如eth0)和GRE隧道(比如tun0)来自不同类型接口的数据包具有不同的报头格式:
如何检查pcap_loop()回调处理程序我得到了哪种类型的包头?
我想在CentOS 5.5机器上安装和使用libpcap的最新版本(1.1.1).我通过以下方式配置,编译和安装了新的libpcap库:
[dima@localhost libpcap-1.1.1]$ ./configure
[dima@localhost libpcap-1.1.1]$ make
[dima@localhost libpcap-1.1.1]$ sudo make install
Run Code Online (Sandbox Code Playgroud)
但是当我尝试链接libpcap共享库(使用-lpcap链接器标志)时,我的应用程序链接到旧版本的libpcap库(使用pcap_lib_version()API调用验证).
我需要做什么才能链接到新的libpcap库?
提前致谢