我是在BCB6下写的程序,不一定通用.最近才开始学习.
使用STRING:
1 引用 不带H.
2 要使用名字空间:using namespace std;
否则会出些错误,至少在BCB下是这样的.
域名转换为IP:
gethostbyname()
代码:
string gethostip(string &host)
{
WSADATA wsaData;
string IP;
int pos=0;
char temp[255];
strcpy(temp,host.c_str());
while(temp[pos++]=='//');
pos--;
WSAStartup(MAKEWORD(2,0),&wsaData);
if(host.empty() )
{
char hostname[128];
if(gethostname(hostname,128)!=0)
return string("");
host=hostname;
}
try
{
struct hostent *hp=gethostbyname(temp+pos);//host.c_str());
if (hp== NULL)
{
IP="";
}
else
IP=inet_ntoa(*(struct in_addr*)hp->h_addr_list[0]);
}
catch(...)
{
IP="";
}
WSACleanup();
printf("%s/n/r",IP);
return IP;
}
这段代码是网上找到的.我稍改了一点.在BCB下通过.
用SOCKET读网页的时候有时候会阻塞停在这个函数处recv()
网上有朋友介绍了几种方案,我是用setsockopt这个来解决的.
效果还好.至少不会停住不动了.
向网站发送GET请求的时候,要加HOST:域名.
C++的这个目前看是比C#速度快一些.