socket发送数据时一般会用到函数inet_addr(strIP),如果参数无效,返回INADDR_NONE,即0xFFFFFFFF(MSDN上的解释)。
但如果strIP为空字符串,即"",则函数inet_addr在win2003和XP下得到的结果不同!win2003下返回0xFFFFFFFF(对应的IP为255.255.255.255,即全网广播地址),而XP下却返回0。
如果目标地址为0xFFFFFFFF,则socket发送不会失败(只对UDP socket测试),反而成广播了!
应对方法:
【方法1】:判断strIP是否为空,若空则不要继续发送了;
【方法2】:判断inet_addr的返回值,若为INADDR_NONE就不发送(但就想往255.255.255.255地址发送,则需要特别判断)。