struct addrinfo hints, *res, *res0;
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_CANONNAME|AI_NUMERICSERV;
char cport[32] = {0};
FSprintf(cport,32,"%d",port);
int error = getaddrinfo(ip, cport, &hints, &res0);
if (error == 0)
{
int connectRet = 0;
int socket = 0;
for (res = res0; res; res = res->ai_next)
{
socket = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
if (socket < 0)
{
continue;
}
connectRet = connect(socket, res->ai_addr, res->ai_addrlen);
if (connectRet == -1)
{
continue;
}
else
{
break;
}
}
freeaddrinfo(res0);//必须成功后释放,失败是没有申请到内存,不需要释放
}
else
{
//error
}
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_CANONNAME|AI_NUMERICSERV;
char cport[32] = {0};
FSprintf(cport,32,"%d",port);
int error = getaddrinfo(ip, cport, &hints, &res0);
if (error == 0)
{
int connectRet = 0;
int socket = 0;
for (res = res0; res; res = res->ai_next)
{
socket = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
if (socket < 0)
{
continue;
}
connectRet = connect(socket, res->ai_addr, res->ai_addrlen);
if (connectRet == -1)
{
continue;
}
else
{
break;
}
}
freeaddrinfo(res0);//必须成功后释放,失败是没有申请到内存,不需要释放
}
else
{
//error
}