今天调了一个双机(主备机)的通信与切换bug,
环境:
linux
主机:192.168.0.152
备机:192.168.0.153
发现一个问题:
把主机的网线拔掉,备机会切换为主机IP,继续对外提供服务,但是双机通信程序里的select出现了问题
select不是等待有连接或者超时才会返回,而是立即返回。这说明select出现了问题。
调了半天,最后发现:
由于我的备机只使用了一个网口eth0,IP从153切换到152后,网络环境已经改变,但socket还是以前的监听152时创建的socket。
需要重新创建socket监听,才不会出现select异常的问题。
但经测试,这个问题在使用了多个网口,并且多个网口都可连通的服务器中,是不会出现的。