c/c++语言开发共享绑定错误(99):无法分配请求的地址

我试图让以下代码工作,但收到上述错误。 我有理由相信我输入的地址是正确的,因为它在一个执行类似任务的单独程序中工作。 这让我相信我犯了一些愚蠢的错误,任何帮助都会受到赞赏!

/*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, '', 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(); } 

错误信息:

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

    您只能将套接字绑定到本地接口的地址。

      以上就是c/c++开发分享绑定错误(99):无法分配请求的地址相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/545003.html

      (0)
      上一篇 2021年1月9日
      下一篇 2021年1月9日

      精彩推荐