Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C客户端只能连接到本地主机。_C_Sockets_Client_Telnet - Fatal编程技术网

C客户端只能连接到本地主机。

C客户端只能连接到本地主机。,c,sockets,client,telnet,C,Sockets,Client,Telnet,我的C客户机可以在本地连接到我的服务器,但当我尝试从远程计算机连接时,它没有连接,它以“错误连接失败”的形式到达 我能够从远程机器远程登录到服务器 char* user_IP; printf("Please enter an IP Address\n"); 731 732 scanf(" %s", user_IP); 733 /*while (isdigit(IP) && IP>0)

我的C客户机可以在本地连接到我的服务器,但当我尝试从远程计算机连接时,它没有连接,它以“错误连接失败”的形式到达

我能够从远程机器远程登录到服务器

     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            }
char*user\u IP;
printf(“请输入IP地址\n”);
731
732扫描频率(“%s”,用户IP);
733/*while(isdigit(IP)&&IP>0)//有一些isue
734            {                                                                
735 printf(“请输入IP地址”);
736
737扫描频率(“%s”和&IP);
738                }*/
739 play_num=2;
740 IP=atoi(用户IP);
741
742
743 if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
744            {
745 printf(“\n错误:无法创建套接字\n”);
746返回1;
747            }
748
749内存集(&serv_addr,0,sizeof(serv_addr));
750服务地址sin家庭=AF家庭;
751服务地址单端口=htons(5001);
752
753如果(连接(sockfd,(结构sockaddr*)和服务地址,大小(服务地址a\
ddr))<0)
754            {
755 printf(“\n错误:连接失败\n”);
756返回1;
757            }

有几个问题

  • 您尚未在连接中的任何位置使用IP地址

  • 使用
    scanf()
    时不存储任何内容。使用类似于:

    Char user_IP[16];
    
    Scanf("%s", user_IP);
    

  • user\u IP
    在使用
    scanf
    之前不会指向内存。这显然会崩溃。您似乎没有在任何地方使用
    IP
    变量,并且您已将
    serv\u addr
    归零,因此
    serv\u addr.sin\u addr
    为零。而且,
    atoi
    不是解析IP地址字符串的正确方法;它解析整数;请参见
    inet\u aton
    。就是这样,我不知道我怎么会错过这么简单的东西,谢谢!!!