先直接说解决方法吧:关闭Windows Time服务(W32Time)。下图是临时关闭,若准备永久关闭,则去services.msc中禁用掉这个服务。
///==========================================
///想看细节的继续,不想看的可关闭
///==========================================
字面理解,端口绑定错误,原因是这个端口已被占用。
好吧,那工具又没有能改端口的地方,或者这个协议不允许改端口,那就需要我们找出是哪个线程占用了这个端口。从网上搜了一下SNTP服务使用123端口,于是使用"netstat -ano|findstr 123"是谁占用了123端口。
在我的电脑上,这次是PID号1196的进程,占用了123端口。
然后打开任务管理器,记得勾选显示所有用户的进程,不然可能看不全。
原来是这个svchost进程,但这货是windows的重要进程,强行关闭会使windows轻则报错、重则马上重启。没办法,还需要更深入的去分析,是哪个线程或者服务占用了这个端口。
先到任务管理器的服务里面看一下吧。在我这里,svchost进程(PID1196)带起了这些服务。看描述能知道大概干什么用的,但最后一个EventSystem服务,是windows很重要的一个服务,好奇心强的同学可以禁用试试。其他好像可以逐个关着试试。
于是乎,从PID1196进程启动的服务中,由上到下的关闭,运气好,关到W32Time服务后,123端口被释放了。那就是windows对时服务搞的鬼了。
从任务管理器中只是临时关闭,彻底关闭这个服务的方法,输入services.msc,然后找到Windows Time,右键选择属性,吧启动类型设置为"禁用"即可。
///===========================
///对于如何知道哪个端口被哪个线程或服务占用,我并没有找到很好的方法,只能靠挨个去试了。
///更详细的进程信息可以去资源管理中查看,但是也就那个样子吧,没有办法准确判断是哪个线程或者服务占用了端口。
///===========================