本帖最后由 PQguanfang 于 2020-1-23 17:44 编辑
如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536(即:2^16)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1)。
如何在超过65535的端口上开服
Powered By Steven Technology 2015
转载务必注明原作者
{:10_523:}
一、概念
在Internet上,各主机间通过TCP/IP协议发送和接收数据包,各个数据包根据其目的主机的ip地址来进行互联网络中的路由选择。可见,把数据包顺利的传送到目的主机是没有问题的。问题出在哪里呢?我们知道大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据包传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。
本地操作系统会给那些有需求的进程分配协议端口(protocol port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。当目的主机接收到数据包后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。说到这里,端口的概念似乎仍然抽象,那么继续跟我来,别走开。
端口其实就是队,操作系统为各个进程分配了不同的队,数据包按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过操作系统允许各进程指定和调整自己的队的大小。
不光接受数据包的进程需要开启它自己的端口,发送数据包的进程也需要开启端口,这样,数据包中将会标识有源端口,以便接受方能顺利地回传数据包到这个端口。——百度百科
UDP协议规定,端口的最大值为65535,大小为16bit。
UDP**包含16位源端口,16位目标端口,16位UDP长度和校验。
二、实现
在使用32bit纪录变量(也就是unsighed short)记录端口的程序中,在没有做限制的情况下,端口是可以超过65535的。恰好,Minecraft PE并没有对端口的大小做限制。
因为UDP报头明确规定了端口为16bit,所以即使MCPE使用32bit的数据,也会强制转换。
三、规则
当端口超过65535时,会自动减去65536(即2^16)。以88888端口为例:
88888-65536=23352
当端口仍然超过65535时,会循环进行此操作,直至端口合法。
四、总结
所以说,大家看明白应该怎么开服了吗?如果你想开端口在88888的服,实际端口应该是23352。
教程写得比较简单,如哪里有疏漏,烦请斧正。{:10_492:}
最后,你也可以加入群329110127讨论/开发MCPE联机及PocketMine插件。
楼主牛逼
真tm水的一手好帖!
飘过咯------
有意思吗
这样开服还不如去租
=。=还是有那么点意思,学习了
Mark一下
不过PC是用不了的
不过PC是用不了的
还行还行 支持一下
这个教程有意思,学会了
感谢分享
感谢分享
感谢分享
学会了,但是也没有什么大用处啊
999999999999999999999999999999999999999999999999999
会废了, 66666666
哈哈哈,这真的好玩,感谢楼主,收藏了!
这个教程好用 一直不知道
挺有意思的

感谢作者大大,太牛逼了
真不错,找到了
水的过分了昂