से इनकार कर दिया है मैं एक विशेष बंदरगाह में यूडीपी पर एक सर्वर को एक स्ट्रिंग HI भेजने और फिर प्रतिक्रिया प्राप्त करने की कोशिश कर रहा हूं। हालांकि, मैं revfrom() का उपयोग कर प्रतिक्रिया प्राप्त करने का प्रयास करने के बाद मैं राज्य को अवरुद्ध करने में फंस गया था। मैं जुड़ा यूडीपी का उपयोग कर की कोशिश की लेकिन मुझे मिल गया:यूडीपी में प्राप्त होने में त्रुटि: कनेक्शन ने
त्रुटि यूडीपी में प्राप्त: कनेक्शन अस्वीकृत
क्या इसके कारण हो सकता है? सर्वर मेरे नियंत्रण में नहीं है, लेकिन मुझे यह ठीक काम करने के बारे में पता है।
मैं कोड को शामिल किया है
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;
चूंकि सॉफ़्ट पर एक संदेश उपलब्ध होने तक 'recvfrom' अवरुद्ध होगा, क्या आप सुनिश्चित हैं कि सर्वर आपके संदेश का जवाब दे रहा है? – jschmier
सर्वर फॉल्ट के पास [कनेक्शन अस्वीकार] के बारे में एक कैननिकल प्रश्न है (http://serverfault.com/questions/725262/what-causes-the-connection-refused-message)। – Raedwald