重复的listen port引发的问题

今天遇到一个奇怪的问题。另一个项目组的同事在进入跨服的时候出了问题,经过调试排查,发现是没有进入跨服,虽然已经成功在跨服申请创建了角色,但之后客户端似乎并没有请求进入。

由于同事说代码是没有改动的,那么原因可能是配置错误,或者客户端的问题。询问了一下,客户端的代码也没有改动。那么大概就是配置出了问题了。但我粗略排查了一下,并没有什么异常。此时已经有点灰心丧气了。但我还是打起了点精神,重新再次扫描了一遍跨服和原服的配置,突然发现,loginserver为user开的端口竟然一样。这很奇怪,这说明客户端可能想连接跨服的loginserver,然而却连接了原服的,那么自然就进不去跨服了。

我把端口改了后,果然正常了。

但是,为什么端口一样反而还能启动呢?对我来说,这是一个奇怪的现象。我在自己的电脑上也运行了两份loginserver,发现端口一样的确能够启动。于是我重新回顾了一下socket的学习笔记,并测试了bind函数。

结果却是不能同时开一样的端口,perror提示:Address already in use

这个测试代码见:https://github.com/demon90s/Beginning_Linux_Programming_CodeNote/blob/master/ch15_Sockets/example4/server.c

这只能找时间看看项目中网络模块的内部实现是如何的了。

猜你喜欢

转载自www.cnblogs.com/demon90s/p/8965140.html