के तहत सी में "अनुरोधित पता असाइन नहीं किया जा सकता" जब मैं यह पता असाइन करता हूं, तो यह cannot assign requested address
कहता है। लेकिन जब मैं स्थानीय पता डालता हूं (127.0.0.1) यह इसे स्वीकार करता है। क्यूं कर???मुझे रन टाइम में त्रुटि मिली है कि लिनक्स (Centos)
char* hostname = "192.168.1.8";
int sockfd;
struct sockaddr_in my_addr; // my address information
struct sockaddr_in their_addr; // connector's address information
socklen_t addr_len;
int numbytes;
char buf[MAXBUFLEN];
int port =5000;
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
perror("socket");
exit(1);
}
try
{
my_addr.sin_family = AF_INET; // host byte order
my_addr.sin_addr.s_addr = inet_addr(hostname);
printf("Accepted/n");
// automatically fill with my IP
my_addr.sin_port = htons(5000); // short, network byte order
memset(&(my_addr.sin_zero), '\0', 8); // zero the rest of the struct
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1)
{
perror("bind");
exit(1);
}
while (1)
{
addr_len = sizeof(struct sockaddr);
if ((numbytes = recvfrom(sockfd, buf, MAXBUFLEN-1 , 0,
(struct sockaddr *)&their_addr, &addr_len)) == -1) {
perror("recvfrom");
exit(1);
}
//printf("got packet from %s\n",inet_ntoa(their_addr.sin_addr));
//printf("packet is %d bytes long\n",numbytes);
buf[numbytes] = '\0';
//printf("packet contains \"%s\"\n",buf);
}
close(sockfd);
}
catch(...)
{
शायद क्योंकि आपकी मशीन का स्थानीय पता 192.168.1.8 नहीं है? –
इसके अलावा, आपने इसे सी के रूप में टैग किया है लेकिन मुझे 'try {...} catch (...) {...} 'ब्लॉक दिखाई देता है। क्या यह सी ++ होना चाहिए? –