首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用accept()提供错误的14个错误地址

调用accept()提供错误的14个错误地址
EN

Stack Overflow用户
提问于 2014-11-17 13:51:31
回答 1查看 5.9K关注 0票数 0

我正在创建一个客户端和一个服务器应用程序,我目前正在尝试建立一个连接。每当客户端试图连接到服务器时,服务器调用将接受返回-1。当我检查errno时,接受()设置为14,它代表错误的地址。我创建套接字和接受的代码如下所示

代码语言:javascript
复制
  //create socket
  if((listenfd=socket(AF_INET,SOCK_STREAM,0))<0)
    {
      fprintf(stderr, "Cannot create server socket! errno %i: %s\n",errno,strerror(errno));
      exit(-1);
    }

  //bind to the socket
  servaddr.sin_family = AF_INET;
  servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
  servaddr.sin_port = htons(port);


  if( bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr))<0)
    {
      printf("Server bind failure errno %i: %s\n",errno,strerror(errno));
      exit(-1);
    }

  // Turn 'listenfd' to a listening socket. Listen queue size is 5. 

  if(listen(listenfd,5) < 0)
    {
      printf("Server listen failure errno %i: %s\n",errno,strerror(errno));
      exit(-1);
    }
  while(1)
    {
      //accept connections
      if(newsock=accept(listenfd,(struct sockaddr*)&clientaddr,sizeof(clientaddr)<0))
    {
      printf("Server accept failure errno %i: %s\n",errno,strerror(errno));
      exit(-1);
    }
      int ch=fork();
      if(ch<0)
    {
      printf("Fork failure errno %i: %s\n",errno,strerror(errno));
      exit(-1);
    }
      else if (ch==0)
    {
      char buff[100];

      int rc;
      rc=recv(listenfd,buff,sizeof(buff),0);
      if(rc<0)
        {
          printf("Receive failure errno %i: %s\n",errno,strerror(errno));
          exit(-1);
        }

      printf("%s",buff);
      exit(-1);
    }

    }

我的服务器代码做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-17 13:55:03

代码语言:javascript
复制
if(newsock=accept(listenfd,(struct sockaddr*)&clientaddr,sizeof(clientaddr)<0))

在您的代码中,sizeof(clientaddr)<0计算结果为0,并作为最后一个参数传递给accept函数。代之以:

代码语言:javascript
复制
int addrlen;
...
addrlen = sizeof(clientaddr);
if((newsock=accept(listenfd,(struct sockaddr*)&clientaddr,&addrlen))<0)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26974179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档