inet_addr解决思路

inet_addr
網上到處都說,可以用這個函數判斷IP是否合法。
DWORD xx=inet_addr("111222");

這裡,這個X= 1991377152  !=  INADDR_NONE
難道我的電腦很特別,還是我的VS2008很特別,還是我的PROJECT用了unicode.

大家聊聊.
------解决方案--------------------
一个域也是合法的IP,对于inet_addr来说,具体看MSDN。
如果我没猜错,1991377152=htonl(111222);

你非要测试的话,试试:
1.1.1.256
------解决方案--------------------
是想判断一个字符串是否是合法的IP地址吗?
------解决方案--------------------
inet_addr 将"数字+句点"的格式的IP地址转换到unsigned long中,返回值已经是按照网络字节顺序的

------解决方案--------------------
你说的没错,你的代码也是合法的IP地址,我看《WinSock网络编程经络》对这个函数有详细说明,这还有代码,你可以找NetConv目录,有此函数实现:
http://download.****.net/detail/geoff08zhang/4571358
------解决方案--------------------
struct sockaddr_in addrIp;
memset(&addrIp,0,sizeof(sockaddr_in));
unsigned long ulongIP=inet_addr(ChildString);
if (ulongIP==INADDR_NONE)
{
return FALSE;
}
addrIp.sin_addr.s_addr=ulongIP;
if (strcmp(inet_ntoa(addrIp.sin_addr),ChildString)!=0)
{
return FALSE;
}


把字符串IP转成DWORD型,再把DWORD转字符串 比较2字符串一样就OK  我是这样判断的
------解决方案--------------------
合法是啥意思?255.255.255.255之内的都行么?还是说要ping的通啊?
------解决方案--------------------
个人感觉:
DWORD xx=inet_addr("111222"); 

DWORD xx=inet_addr("111222.0.0.0");
是一样的 而
inet_addr("111222.0.0.0");

CString str.Format("%d.0.0.0",111222 % 256);
inet_addr(str.GetBuffer(0));
是一样的  当然我没测试 你可以测试下