gpt4 book ai didi

c - UDP 接收错误 : Connection refused

转载 作者:太空狗 更新时间:2023-10-29 16:40:11 25 4
gpt4 key购买 nike

我正在尝试通过特定端口中的 UDP 将字符串 HI 发送到服务器,然后接收响应。但是,在我尝试使用 recvfrom() 获取响应后,我陷入了阻塞状态。我尝试使用连接的 UDP,但我得到了:

Error receiving in UDP: Connection refused

这可能是什么原因?服务器不受我控制,但我知道它工作正常。

我已经添加了代码

int sockfdudp;
char bufudp[MAXDATASIZE], port[6];
struct addrinfo hints, *servinfo, *p;
struct sockaddr_storage addr;
int rv;
char s[INET6_ADDRSTRLEN];
int bytes_recv, bytes_sent;
socklen_t len;

scanf("%s",port);
printf("UDP Port: %s \n", port);

// Start connecting to datagram server
memset(&hints, 0, sizeof hints);
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_DGRAM;

if ((rv = getaddrinfo(SERVER_NAME, port, &hints, &servinfo)) != 0) {
fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(rv));
return 1;
}

// loop through all the results and make a socket
for(p = servinfo; p != NULL; p = p->ai_next) {
if ((sockfdudp = socket(p->ai_family, p->ai_socktype,
p->ai_protocol)) == -1) {
perror("Creating datagram socket");
continue;
}

if (connect(sockfdudp, p->ai_addr, p->ai_addrlen) == -1) {
close(sockfdudp);
perror("Connecting stream socket");
continue;
}
break;
}

if (p == NULL) {
fprintf(stderr, "ClientUDP: failed to bind socket\n");
return 2;
}


freeaddrinfo(servinfo);

if ((bytes_sent = sendto(sockfdudp, UDP_MSG, strlen(UDP_MSG), 0, p->ai_addr, p->ai_addrlen)) == -1) {
perror("ClientUDP: Error sending data");
exit(1);
}
printf("Data %s sent\n", UDP_MSG );

len = sizeof(struct sockaddr_storage);

if ((bytes_recv = recvfrom(sockfdudp, bufudp, MAXDATASIZE-1, 0,(struct sockaddr*)&addr, &len)) == -1) {
perror("Error receiving in UDP");
exit(1);
}

printf("Bytes recv %d\n", bytes_recv);

bufudp[bytes_recv] = '\0';

printf("ClientUDP: Received\n %s \n",bufudp );

close(sockfdudp);

return 0;

最佳答案

很可能您正在向不监听该特定端口的服务器发送内容。这将导致发回 icmp 消息,并且在您连接套接字的情况下,您的下一个 recvfrom 将返回错误。

使用 tcpdump 或 wireshark 检查线路上发生了什么。

关于c - UDP 接收错误 : Connection refused,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2372371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com