gpt4 book ai didi

c - OpenWRT C程序未接收数据包

转载 作者:行者123 更新时间:2023-11-30 17:16:18 24 4
gpt4 key购买 nike

我为 OpenWrt 路由器编译了一个简单的 C UDP 服务器和客户端。当代码都在我的电脑上时,代码可以按预期工作。客户端(如果在路由器上)似乎成功发送了数据包(端口 6115),因为如果我将它们发送到电脑(具有相同的服务器代码),我的电脑会确认它们。但如果在路由器上,无论客户端是在路由器上(使用本地环回)还是在 PC 上运行,服务器都不会收到它们。

在路由器上,没有其他程序正在使用端口 6115。

我检查了 /etc/config/firewall 中的防火墙配置,它似乎允许来自端口 6115 的数据包:

config rule

option input 'ACCEPT'

option output 'ACCEPT'

option forward 'ACCEPT'

option target 'ACCEPT'

option proto 'tcp udp'

option src_port '6115'

option dest_port '6115'

option name 'Allow-myudp'

option src '*'

option family 'ipv4'

我尝试禁用防火墙,但没有任何变化。

问题:如果我通过本地环回 (127.0.0.1) 发送数据包,防火墙是否会干扰,或者我应该尝试除干扰防火墙之外的其他操作?

我听说这个问题可能是因为我的路由器设备是大尾数法引起的,如果这会导致问题,我该怎么办?

如果相关,这里是客户端和服务器代码(用于本地环回):

服务器:

int udpSocket, ndat;
struct sockaddr_in serverAddr;
struct sockaddr_storage serverStorage;
socklen_t addr_size;
char buf[1024];

udpSocket=socket(PF_INET,SOCK_DGRAM,0);

serverAddr.sin_family=AF_INET;
serverAddr.sin_port=htons(6115);
memset(serverAddr.sin_zero,'\0',sizeof serverAddr.sin_zero);

bind(udpSocket,(struct sockaddr*)&serverAddr,sizeof(serverAddr));

addr_size=sizeof serverStorage;

while (1) {

ndat=recvfrom(udpSocket,buf,1024,0,(struct sockaddr*)&serverStorage,&addr_size);
printf("DATA RECEIVED WITH %u BYTES\n",ndat);

}

客户:

int udpSocket;
char buffer[1024]="Hello [home]";
struct sockaddr_in serverAddr;
socklen_t addr_size=sizeof serverAddr;

udpSocket=socket(PF_INET,SOCK_DGRAM,0);

serverAddr.sin_family=AF_INET;
serverAddr.sin_port=htons(6115);
serverAddr.sin_addr.s_addr=inet_addr("127.0.0.1");
memset(serverAddr.sin_zero,'\0',sizeof serverAddr.sin_zero);

bind(udpSocket,(struct sockaddr*)&serverAddr,sizeof(serverAddr));

sendto(udpSocket,buffer,1024,0,(struct sockaddr*)&serverAddr,addr_size);

printf("Sent...\n");

如果您有任何问题,请给我如何解决问题的建议。提前致谢。

最佳答案

我的错,我忽略了服务器代码,因为由于某种原因它在 PC 上运行。无论如何,我必须在调用 bind(); 之前添加 serverAddr.sin_addr.s_addr=htonl(INADDR_ANY);

关于c - OpenWRT C程序未接收数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29695946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com