如题!!!!!!请高手指教,谢谢

解决方案 »

  1.   

    直接连接IP和端口就可以,当然要使用TCP协议。其实连内外网本身没有多大差异。
      

  2.   

    tcp协议下连接内外网没有多大区别,有可能是外网上没有给你开通端口
      

  3.   

    嗯,如果的动太IP ,我用域名的话直接connect("www.***.com",port);还是需要什么转换?
      

  4.   

    //Test if AHost is a valid IP address string
    //检查一个串是否为合法的IP地址串
     bool __fastcall IsIP(const char *AHost)
    {
       int iLen=strlen(AHost);
       if(iLen<7||iLen>15)
          return false;
       char TestIP[17];
       memcpy(TestIP,AHost,iLen);
       int DotCount=0;
       TestIP[iLen]='.';
       int TestDigit=0;
       for(int i=0;i<=iLen;i++)
       {
          if((TestIP[i]<'0'||TestIP[i]>'9')&&
             (TestIP[i]!='.'||i==0))
             return false;
          if(TestIP[i]=='.')
          {
             if(TestDigit>255||TestDigit<0)
                return false;
             if(TestIP[i-1]=='.')
                return false;
             TestDigit=0;
             DotCount++;
          }
          else
          {
             TestDigit=TestDigit*10+(TestIP[i]-48);
          }
       }
       return DotCount==4;
    }
     bool IsIP2(const char *AHost)
    {
       int iLen=strlen(AHost);
       if(iLen<7||iLen>15)
          return false;
       char TestIP[17];
       memset(TestIP,0,17);
       int IP[4]={0,0,0,0};
       sscanf(AHost,"%d.%d.%d.%d%s",&IP[0],&IP[1],&IP[2],&IP[3],TestIP);
       return IP[0]<256
            &&IP[1]<256
            &&IP[2]<256
            &&IP[3]<256
            &&(strlen(TestIP)==0);
    }
    //Resolvehost from AHost to IP Address stored to DestIP String
    //地址解析
    bool GetHostByName(const char AHost[],char *DestIP)
    {
       WSADATA WSADat;
       struct hostent* Host;
       if(WSAStartup(WINSOCK_VERSION,&WSADat)!=0)
          return false;
       __try
       {
          Host=gethostbyname(AHost);
          sprintf(DestIP,
                  "%d.%d.%d.%d\0",
                  (unsigned char)(Host->h_addr_list[0][0]),
                  (unsigned char)(Host->h_addr_list[0][1]),
                  (unsigned char)(Host->h_addr_list[0][2]),
                  (unsigned char)(Host->h_addr_list[0][3]));
       }
       __finally
       {
          WSACleanup;
       }
       return IsIP(DestIP);
    }//Resolvehost from AHost to IP Address stored to DestIP String
    //test It is Local Address
    //地址解析,析出本地地址
    bool ResolveHost(const char AHost[],char *DestIP)
    {
       bool Result=true;
       if(0==stricmp(AHost, "LOCALHOST")) // this Computer
          strcpy(DestIP,"127.0.0.1");
       else
          if(0==stricmp(AHost, "(LOCAL)"))// this computer
             strcpy(DestIP,"127.0.0.1");
          else
             if(0==stricmp(AHost, "."))   // this computer
                strcpy(DestIP,"127.0.0.1");
             else
                if(IsIP(AHost))
                   strcpy(DestIP,AHost);
                else
                   Result=GetHostByName(AHost,DestIP);
       return Result;
    }
      

  5.   

    不支持__fastcall的就把它删除掉(汗,C++Builder的代码^_^).