为什么connect会得到不同的结果 帮忙看看吧!该怎么处理

为什么connect会得到不同的结果 帮忙看看吧!
//   Initialize   Winsock
WSADATA   wsaData;
int   iResult   =   WSAStartup(MAKEWORD(2,2),   &wsaData);
//   Create   a   SOCKET   for   connecting   to   server
SOCKET   ConnectSocket;
ConnectSocket   =   socket(AF_INET,   SOCK_STREAM,   IPPROTO_TCP);
if   (ConnectSocket   ==   INVALID_SOCKET)   {
WSACleanup();
return;
}

char   address[]= "www.5166.info ";
hostent*   remoteHost=NULL;
remoteHost   =   gethostbyname(address);
if   (WSAGetLastError()   !=   0)   {
WSACleanup();
return;
}
if   (remoteHost==NULL)
{
WSACleanup();
return;
}
sockaddr_in   clientService;  
clientService.sin_family   =   AF_INET;
clientService.sin_addr=*(struct   in_addr   *)*remoteHost-> h_addr_list;
clientService.sin_port   =   htons(   220   );

//   Connect   to   server.
if   (   connect(   ConnectSocket,   (SOCKADDR*)   &clientService,   sizeof(clientService)   )   ==   SOCKET_ERROR)   {
printf(   "Failed   to   connect.\n "   );
WSACleanup();
return;
}

printf( "Connected   to   server.\n ");
WSACleanup();
return;
问题1:我输入的是一个不存在的url,但是gethostbyname还是返回正常,也取不到错误!
问题2:当port=1223时,connect报告失败,而port=80时,却说连接成功。
一个上午都花费在这几段程序上了,帮忙看看吧!

------解决方案--------------------
问题1:你先判断remoteHost 是否为NULL
问题2:连接网站当然要使用80端口,这是最基本的常识了
------解决方案--------------------
参考
char servAddr[30] = "www.sohu.com ";
hostent* pHostent = gethostbyname( servAddr );
if(pHostent == NULL){
wsprintf( buff, "get host name failed with error: %d\n ", WSAGetLastError() );
mbox( buff );
return false ;
}
hostent& he = *pHostent;
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons( 80 );
memcpy( &serverAddr.sin_addr.s_addr, he.h_addr_list[0], he.h_length );
if(connect( m_socket, ( SOCKADDR * ) &serverAddr, sizeof( serverAddr ) ) == 0){
//success
mout( "connect to server success.\n " );
}else{
wsprintf( buff, "connect to server fail. errcode: %d\n ", WSAGetLastError() );
mout( buff );
return false;
}