原文链接:http://www.cnblogs.com/luxiaoxun/p/3376682.html
我直接Copy原作中的函数使用在C#中,把形如"192.168.1.102"的IP转换为整数传递,在新的函数中创建
IPEndPoint时,ipe的值为102.1.168.192:4000 【clientPort传递的是4000】
IPEndPoint ipe = new IPEndPoint((long)clientIP, clientListenPort);
可是很多讲IP协议的地方都是按照原作的逻辑讲述的,为什么C#在这里会颠倒过来呢?
把原作代码略作修改,然和就可以正常联机了。但还是搞不明白IPEndPoint这是玩儿的哪一出。。。
<span style="white-space:pre"> </span>private uint IPStrToInt32(string IP)
{
char[] separator = new char[] { '.' };
string[] items = IP.Split(separator);//实际测试发现应该是低位在前
//return uint.Parse(items[0]) << 24
// | uint.Parse(items[1]) << 16
// | uint.Parse(items[2]) << 8
// | uint.Parse(items[3]);
return uint.Parse(items[3]) << 24 | uint.Parse(items[2]) << 16
| uint.Parse(items[1]) << 8 | uint.Parse(items[0]);
}