用CSocket网络编程内客户端如何才能连上外网的IP的服务器? 如题!!!!!!请高手指教,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接连接IP和端口就可以,当然要使用TCP协议。其实连内外网本身没有多大差异。 tcp协议下连接内外网没有多大区别,有可能是外网上没有给你开通端口 嗯,如果的动太IP ,我用域名的话直接connect("www.***.com",port);还是需要什么转换? //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;} 不支持__fastcall的就把它删除掉(汗,C++Builder的代码^_^). 【100】一个有趣的现象 CFormView滚动条风格 创建一个邮槽,两个线程来写,然后main来读,程序卡死.求助 CFileDialog背景色. 如何转化一个十六进制符号数为无符号数? 用VC写的程序 运行了大概4个小时程序就死了 内存和GDI没有泄露 入门问题请教:如何成比例缩放 请看看这段opengl代码的问题..谢谢! 请问:已知别人程序窗口上某个按钮的hwnd,想要给这个按钮发送一个“回车”或“空格”的命令,该怎么写? asp对com DLL程序的调用,恳请大虾帮助 如何得到LPCWSTR长度?? 关于String table的使用
//检查一个串是否为合法的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;
}