Erreur de liaison (99): Ne peut pas attribuer une adresse demandée

Je suis en train d'essayer d'obtenir le morceau suivant du code de travail, mais la réception de l'erreur ci-dessus. Je suis raisonnablement sûr que l'adresse que j'suis en train de monter dans est correct, car il travaille dans un programme distinct qui est en train de faire une tâche similaire. Ce qui m'amène à croire que je fais une sorte de stupide erreur, toute aide serait appréciée!

   /*Create TCP socket*/
int tcp_socket(void)
{
int s;
while((s = socket(PF_INET,SOCK_STREAM,0))==-1 && errno == EINTR){
continue;
}
return s;
}
/*Bind tcp*/
int tcp_bind(int s, char *server, uint16_t port)
{
int             rv;
struct sockaddr_in  sin;
struct hostent      *host_addr;
assert(s >= 0);
host_addr = gethostbyname(server);
if (!host_addr) {
perror("gethostbyname(server)");
return -1;
}
memset(&sin, '\0', sizeof sin);
sin.sin_family = AF_INET;
sin.sin_port = htons(port);
sin.sin_addr = *((struct in_addr *)host_addr->h_addr);
while((rv = bind(s,(struct sockaddr *)&sin, sizeof sin)) == -1
&& errno == EINTR) {
continue;           
}
return (rv == 0) ? 0 : errno;
}
int connect_to_server()
{
int rv;
int socket = tcp_socket();
_logf(LOG_DEBUG, "LOG %s:%d (%s) - %s:%d", __FILE__, __LINE__, __func__, "Socket created:", socket);
rv = tcp_bind(socket,options.server_p, options.dest_port);
if(rv != 0) {
_logf(LOG_ALERT, "LOG %s:%d (%s) - %s:%s", __FILE__, __LINE__, __func__, "tcp_bind failed, error", strerror(rv));
return -1;
}
else {
_logf(LOG_ALERT, "LOG %s (%s) - %s:%d", __FILE__, __LINE__, __func__, "TCP bind success");  
}
}
int main(int argc, char **argv)
{
if (sysconf() == -1) {
exit(-1);   
}
sysinit();
if (parse_options(argc, argv) == -1) {
usage();
exit(1);
}
connect_to_server();
}

Message d'erreur:

Sep 10 10:59:21 michael-VirtualBox mld: LOG mld.c:685 (connect_to_server) - tcp_bind failed, error:Cannot assign requested address

OriginalL'auteur TomSelleck | 2013-09-10