我尝试尝试从一台计算机向另一台计算机发送单个UDP消息。客户端是嵌入式Linux系统,通过调制解调器连接到互联网。没有防火墙。服务器是我的公共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");
}
}
答案 0 :(得分:1)
问题看起来是我的VPS服务器上阻止了UDP流量。当我在Linux PC上重新运行嵌入式系统和客户端上的服务器时,它工作正常。