【发布时间】:2014-04-26 04:42:28
【问题描述】:
我的 C 客户端可以在本地连接到我的服务器,但是当我尝试从远程计算机连接时它没有连接,它到达“错误连接失败”。
我可以从远程机器上 telnet 到服务器。
char* user_IP;
printf("Please enter an IP Address\n");
731
732 scanf(" %s", user_IP);
733 /*while (isdigit(IP) && IP>0) // has some isues
734 {
735 printf("Please enter an IP Address\n");
736
737 scanf(" %s", &IP);
738 }*/
739 play_num=2;
740 IP=atoi(user_IP);
741
742
743 if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
744 {
745 printf("\n Error : Could not create socket \n");
746 return 1;
747 }
748
749 memset(&serv_addr,0,sizeof(serv_addr));
750 serv_addr.sin_family = AF_INET;
751 serv_addr.sin_port = htons(5001);
752
753 if( connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_a\
ddr)) < 0)
754 {
755 printf("\n Error : Connect Failed \n");
756 return 1;
757 }
【问题讨论】:
-
user_IP在使用scanf之前不会指向内存。这显然会崩溃。 -
您似乎没有在任何地方使用
IP变量,并且您已将serv_addr归零,因此serv_addr.sin_addr为零。此外,atoi不是解析 IP 地址字符串的正确方法;它解析整数;请参阅inet_aton。 -
就是不知道我怎么错过了这么简单的东西谢谢!!!