Je suis d'erreur au moment de l'exécution qui “Ne peut pas assigner une adresse demandée” en C sous Linux (Centos)

Lorsque j'attribue cette adresse , il est dit cannot assign requested address. Mais quand j'ai mis l'adresse locale (127.0.0.1) il l'accepte. Pourquoi???

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), '
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(...)
{
'
, 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] = '
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(...)
{
'
; //printf("packet contains \"%s\"\n",buf); } close(sockfd); } catch(...) {
  • Probablement parce que votre machine locale de l'adresse n'est pas 192.168.1.8?
  • Aussi, vous avez marqués ce que C mais je vois une try { ... } catch (...) { ... } bloc. Faut-il le C++?