小编Dim*_*ima的帖子

如何将原始套接字绑定到特定接口

我的应用程序在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)?

c sockets linux network-programming raw-sockets

30
推荐指数
2
解决办法
7万
查看次数

在Jenkins管道上使用多个JUnit结果文件

在我的Jenkins pipleline上,我对两者进行了单元测试:调试和发布配置.每个测试配置都会生成单独的JUnit XML结果文件.两者上的测试名称:调试和发布配置相同.目前,我使用以下junit命令来显示测试结果:

junit allowEmptyResults: true, healthScaleFactor: 0.0, keepLongStdio: true, testResults: 'Test-Dir/Artifacts/test_xml_reports_*/*.xml'

问题是在Jenkins UI上:调试和发布测试结果一起显示,并且无法知道哪个测试(来自调试或发布配置)失败.是否可以单独显示调试和发布测试结果?如果是的话,我该怎么做?

junit jenkins jenkins-pipeline

11
推荐指数
1
解决办法
9580
查看次数

CentOS 5.5 - 创建RPM规范文件的符号链接

我需要在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安装的一部分,我需要做些什么才能创建符号链接?

谢谢

linux centos5 centos rpm rpm-spec

7
推荐指数
1
解决办法
1万
查看次数

从Linux上的特定网络接口接收多播

我正在尝试从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 networking multicast multicastsocket

5
推荐指数
1
解决办法
3537
查看次数

libpcap - 从所有接口捕获数据包

我需要从Linux机器上的所有网络接口捕获数据包.为了做到这一点,我打算使用pcap_open_live()API并将"any"作为设备参数传递.

我有不同类型的端口:以太网端口(比如eth0)和GRE隧道(比如tun0)来自不同类型接口的数据包具有不同的报头格式:

  1. 以太网端口的数据包具有MAC头
  2. 来自隧道的数据包带有Linux"熟"捕获封装(16字节)标头

如何检查pcap_loop()回调处理程序我得到了哪种类型的包头?

linux networking network-protocols pcap libpcap

3
推荐指数
1
解决办法
4040
查看次数

链接新版本的libpcap库

我想在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库?

提前致谢

linux linker shared-libraries pcap libpcap

0
推荐指数
1
解决办法
4848
查看次数