0
Я просто пытаюсь сделать соединение UDP в первый раз с помощью C on linux. У меня есть сервер, который передает число каждую секунду, и у меня есть программа, которая получает. Похоже, что передатчик работает, но приемник, похоже, не получает сообщений. Он просто блокирует вызов функции recv.UDP-сокеты в C не работают
Отправитель
int main(int argc, char** argv)
{
struct sockaddr_in addr;
int sfd, i;
sfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
bzero(&addr, sizeof(struct sockaddr_in));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
addr.sin_port = htons(32000);
for(i = 0; i < 1000; i++)
{
char buffer[100] = { 0 };
sprintf(buffer, "%d", i);
puts(buffer);
if(sendto(sfd, buffer, strlen(buffer), 0, (struct sockaddr*)&addr, sizeof(addr)) == -1)
{
perror("Send");
exit(1);
}
sleep(1);
}
close(sfd);
return 0;
}
Приемник
int main(int argc, char**argv)
{
int sfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
struct sockaddr_in addr;
perror("Socket");
memset(&addr, 0, sizeof(struct sockaddr_in));
addr.sin_port = htons(4000);
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
char buffer[1000];
int n;
if(bind(sfd, &addr, sizeof(addr)) != 0)
{
perror("Bind");
exit(1);
}
while(1)
{
printf("Recv\n");
n = recv(sfd, buffer, 1000, 0);
printf("%d\n", n);
}
return 0;
}
Я чувствую себя глупо. Я изменил порт, когда я что-то пытался, и я забыл изменить его. – chasep255