title: Bind error (99): Cannot assign requested address
body: <p>I am trying to get the following piece of code working but receiving the above error. I am reasonably sure that the address I am putting in is correct because it works in a separate program which is doing a similar task. This leads me to believe I am making some sort of silly mistake, any help would be appreciated!</p>
  
  <pre><code>   /*Create TCP socket*/
  int tcp_socket(void)
  {
      int s;
      while((s = socket(PF_INET,SOCK_STREAM,0))==-1 &amp;&amp; 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 &gt;= 0);
  
      host_addr = gethostbyname(server);
      if (!host_addr) {
          perror("gethostbyname(server)");
          return -1;
      }
  
  
      memset(&amp;sin, '\0', sizeof sin);
      sin.sin_family = AF_INET;
      sin.sin_port = htons(port);
  
      sin.sin_addr = *((struct in_addr *)host_addr-&gt;h_addr);
  
      while((rv = bind(s,(struct sockaddr *)&amp;sin, sizeof sin)) == -1
              &amp;&amp; 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();
  }
  </code></pre>
  
  <p>Error message:</p>
  
  <pre><code>Sep 10 10:59:21 michael-VirtualBox mld: LOG mld.c:685 (connect_to_server) - tcp_bind failed, error:Cannot assign requested address
  </code></pre>