Розетки C - Windows - PullRequest
       3

Розетки C - Windows

0 голосов
/ 09 июня 2018

Я делаю учебную программу, и у меня была проблема.Моя программа - симулятор ftp-utp с сокетами на языке Си.Он отлично работает в том же диспозитиве, но мне нужно использовать в разных диспозитивах.Когда я использую на разных компьютерах, «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;

1 Ответ

0 голосов
/ 09 июня 2018

Я нашел ошибку!Я только что заменил «inet_addr (IP_RAST)» на «INADDR_ANY» в Receiver и теперь работает нормально!Спасибо!И да, не диспозитивен, это устройство!;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...