问题:
Centos7多网卡,抓包时发现某网卡上有UDP包,但是用程序recvfrom无法接收到消息。
解决步骤:
1.确认防火墙是否关闭;
已关闭
2.确认网卡是否开启过滤:cat /proc/sys/net/ipv4/conf/ethxxx/rp_filter (ethxxx是网卡名称)
结果:已关闭(当然此配置项只影响组播,这是病急乱投医)
3.随便找一个服务端和客户端的代码,测试是否能正常进行udp通信;
结果发现完全正常。
server.cpp
#include <sys/types.h> #include <sys/socket.h> #include <pthread.h> #include <netinet/in.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <arpa/inet.h> int main(int argc, char **argv) { if (argc != 2) { printf("Usage: %s port\n", argv[0]); exit(1); } printf("Welcome! This is a UDP server, I can only received message from client and reply with same message\n"); struct sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(atoi(argv[1