void ConnectTest()
{
//初始化socket
WORD ver = MAKEWORD(2, 2);
WSADATA dat;
WSAStartup(ver, &dat);
//域名列表
char hostList[2][20] = {"www.baidu.com","www.qq.com"};
//获取域名对应的ip
struct hostent *hptr=NULL;
for (int i = 0; i < 2; ++i)
{
//解析成功
if ((hptr = gethostbyname(hostList[i])) != NULL) break;
}
//无效指针则结束
if (hptr == NULL || hptr->h_addr == NULL)
{
WSACleanup();
return ;
}
//设置连接参数
SOCKADDR_IN _sin = {};
_sin.sin_family = AF_INET;
_sin.sin_port = htons(7000);
//如果直接ip赋值,例如www.baidu.com的ip为14.215.177.39就是
//_sin.sin_addr.S_un.S_addr = inet_addr("14.215.177.39");
//根据域名获取的ip结果在hptr->h_addr_list[],可能含有多个结果,可以遍历或取第一个值
//两种根据域名解析结果的赋值方法
//1.Copymemory
CopyMemory(&_sin.sin_addr.S_un.S_addr, hptr->h_addr_list[0], hptr->h_length);
//2.inet_addr和inet_ntoa转换
_sin.sin_addr.S_un.S_addr= inet_addr(inet_ntoa(*(struct in_addr*)hptr->h_addr_list[0]));
//建立连接
SOCKET ClientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (SOCKET_ERROR == connect(ClientSocket, (sockaddr *)&_sin, sizeof(_sin)))
{
closesocket(ClientSocket);
WSACleanup();
return false;
}
//开始收发
//send(ClientSocket,data,sizeof(data),0);
//recv
closesocket(ClientSocket);
WSACleanup();
return ;
}
c++ Socket 通过域名进行网络连接
最新推荐文章于 2024-05-16 00:59:29 发布