Unicode环境下字符串问题
根据主机名称/IP查询主机IP/名称
char * CMyTestDlg::GetHostbyIPorName(char* server)
{
struct hostent *hp;
unsigned int addr;
WSADATA wsaData;
if (WSAStartup(0x202,&wsaData) == SOCKET_ERROR)
{
WSACleanup();
return "";
}
if (isalpha(server[0])) {/* server address is a name */
hp = gethostbyname(server);
}
else { /* Convert nnn.nnn address to a usable one */
TRACE(L"ip = %s\n", server);
addr = inet_addr(server);
hp = gethostbyaddr((char *)&addr,4,AF_INET);
}
if(NULL == hp) {
WSACleanup();
return "";
}
.......
}
调用处:
char *hname;
char ip[50];
memset(ip,0,50);
//从ListBox控件中获取选定的主机名称/IP
m_IP_List.GetText(m_IP_List.GetCurSel(), (LPTSTR)ip);
hname = GetHostbyIPorName(ip);
在Unicode环境下编译时,GetHostbyIPorName中hp得到的返回值总是NULL,跟踪到函数体内,主机名称/IP均正确。而如果在gethostbyname()或inet_addr()中输入直接主机名称/IP,如gethostbyname("tser")/inet_addr("192.168.10.14"),就能得到正确的结果。请问各位大虾这是为什么? 我怀疑是调用处字符串转换还是有问题,但不知怎么修改。请各位不吝赐教!!! 谢谢!!!