gpt4 book ai didi

linux - 为什么这个 UDP 客户端/服务器代码不起作用?

转载 作者:太空宇宙 更新时间:2023-11-04 11:10:07 25 4
gpt4 key购买 nike

我正在尝试尝试将单个 UDP 消息从一台机器发送到另一台机器。客户端是一个嵌入式 Linux 系统,通过调制解调器连接到互联网。没有防火墙。该服务器是我拥有的公共(public) VPS 服务器。尽管多次调用客户端,服务器从未收到任何东西。谁能看出可能出了什么问题?

客户:

int main(int argc, char**argv)
{
int sockfd,n;
struct sockaddr_in servaddr,cliaddr;
char sendline[1000];
char recvline[1000];

if (argc != 2)
{
printf("usage: udpcli <IP address>\n");
exit(1);
}

sockfd=socket(AF_INET,SOCK_DGRAM,0);

bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr=inet_addr(argv[1]);
servaddr.sin_port=htons(32000);

sendto(sockfd,"abcd", 4,0,
(struct sockaddr *)&servaddr,sizeof(servaddr));
}

服务器:

int main(int argc, char**argv)
{
int sockfd,n;
struct sockaddr_in servaddr,cliaddr;
socklen_t len;
char mesg[1000];

sockfd=socket(AF_INET,SOCK_DGRAM,0);

bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(32000);
bind(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));

for (;;)
{
len = sizeof(cliaddr);
printf("calling recvfrom\n");
n = recvfrom(sockfd,mesg,4,0,(struct sockaddr *)&cliaddr,&len);
printf("-------------------------------------------------------\n");
mesg[n] = 0;
printf("Received the following:\n");
printf("%s",mesg);
printf("-------------------------------------------------------\n");
}
}

最佳答案

问题看起来像是 UDP 流量在我的 VPS 服务器上被阻止。当我在嵌入式系统上重新运行服务器并在我的 Linux PC 上重新运行客户端时,一切正常。

关于linux - 为什么这个 UDP 客户端/服务器代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23584188/

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