开发者

Bind: Address Already in Use

I'm trying to run my server program but I keep getting this error:

ERROR on binding: Address already in use

  int main(int argc, char *argv[]){

        if (argc < 6){
          printf("usage: stringSearcher <filename> <stringLength>  <searchLength> <nChildren> <nThreads> <blockSize>\n");
          exit(0);
        }

        char* fileName = argv[1];
        int stringLen = atoi(argv[2]);
        int searchLen = atoi(argv[3]);
        nChildren = atoi(argv[4]);
        if (nChildren == 0)
          nChildren = 1;
        int nThreads = atoi(argv[5]);
        int blockSize = atoi(argv[6]);
        int childNo = 0;

    //Opens new socket
      int sockfd;
      sockfd = socket(AF_INET, SOCK_STREAM, 0);

      if (sockfd < 0){
        perror("ERROR opening socket");
        exit(0);
      }



  int  newsockfd, port开发者_如何学运维no, clilen;
  struct sockaddr_in serv_addr, cli_addr;
  int n;

  portno = 5000;
  serv_addr.sin_family = AF_INET;
  serv_addr.sin_addr.s_addr = INADDR_ANY;
  serv_addr.sin_port = htons(portno);

  int opt = 1;
  setsockopt(1, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));

  if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0){
    perror("ERROR on binding\n");
   exit(1);
  }


setsockopt(1, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));

1st argument must be sockfd and not '1'


an excellent tool for winsock development is TCPView. it makes it simple to see which process is listening on which port, socket status, etc.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜