套接字C - Windows

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (29)

我正在做一个学术课程,我有一个问题。我的程序是一个ftp-utp模拟器,带有C语言的套接字。他在同样的决定中工作得很好,但我需要在不同的决定中使用。当我在不同的电脑中使用时,“ip”不会发送到recvfrom(或未接收),但在同一台电脑中,ip被识别。抱歉我的英语不好,我是新的插座。有人能帮我吗?

发件人:

char *ip = (char*) malloc(strlen(message)*sizeof(char));
strcpy(ip,message);
SOCKET winsock;
SOCKADDR_IN sock;
winsock=socket(AF_INET,SOCK_DGRAM, 0);
sock.sin_family=AF_INET;
sock.sin_addr.s_addr=inet_addr(IP_CLIENTE);
sock.sin_port=htons(9010);
sendto(winsock,ip,strlen(ip),0,(SOCKADDR*)&sock,sizeof(sock));

接收器:

SOCKET winsock;
SOCKADDR_IN sock;
int size=sizeof(sock);
char message[BUFLEN];

winsock=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
sock.sin_family=AF_INET;
sock.sin_port=htons(9010);
sock.sin_addr.s_addr = inet_addr(IP_RAST);
bind(winsock,(SOCKADDR*)&sock,sizeof(sock));

memset(message,0,sizeof(BUFLEN));
recvfrom(winsock,message,BUFLEN,0,(SOCKADDR*)&sock,&size);
closesocket(winsock);
WSACleanup();
return message;
提问于
用户回答回答于

我发现了错误!我刚刚在Receiver中用“INADDR_ANY”替换了“inet_addr(IP_RAST)”,现在工作正常!谢谢!是的,不是决定性的,是设备!;)

扫码关注云+社区

领取腾讯云代金券