我试图在特定端口通过UDP向服务器发送字符串HI,然后接收响应。 但是,在我尝试使用recvfrom()获取响应后,我陷入阻塞状态。 我尝试使用连接的UDP,但我得到:
在UDP中接收错误:连接被拒绝
这可能是什么原因? 服务器不在我的控制之下,但我知道它工作正常。
我添加了代码
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: %sn", 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 socketn"); 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 sentn", 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 %dn", bytes_recv); bufudp[bytes_recv] = ' '; printf("ClientUDP: Receivedn %s n",bufudp ); close(sockfdudp); return 0;
您可能会向不听该特定端口的服务器发送内容。 这将导致icmp消息被发回,并且在您连接套接字的情况下,您的下一个recvfrom将返回错误。
检查tcpdump或wireshark在线上发生了什么。
我的猜测是你的ip地址不知何故,或者端口已经在某种程度上使用了。 UDP是无连接的,因此确实没有任何“连接”失败。
需要了解更多c/c++开发分享在UDP中接收错误:连接被拒绝,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!
以上就是c/c++开发分享在UDP中接收错误:连接被拒绝相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/978984.html