Я делаю учебную программу, и у меня была проблема.Моя программа - симулятор 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;