我正在开发一个Qt应用程序并遇到相当奇怪的网络问题。 让我从最终用户的角度展示它的外观。
首先,我启动服务器并验证它是否正在侦听目标端口:
[user@host server]$ sudo netstat -anp | grep 30004
tcp 0 0 0.0.0.0:30004 0.0.0.0:* LISTEN 11113/./server
然后我用telnet连接到服务器:
[user@host server]$ telnet localhost 30004
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
Netstat显示现在已建立连接。到目前为止没什么好看的:
[user@host server]$ sudo netstat -anp | grep 30004
tcp 0 0 0.0.0.0:30004 0.0.0.0:* LISTEN 11113/./server
tcp 0 0 127.0.0.1:30004 127.0.0.1:34608 ESTABLISHED 11113/./server
tcp 0 0 127.0.0.1:34608 127.0.0.1:30004 ESTABLISHED 12657/telnet
然后,服务器根据特定于应用程序的超时断开连接。目前设定为10秒:
[user@host server]$ sudo netstat -anp | grep 30004
tcp 0 0 0.0.0.0:30004 0.0.0.0:* LISTEN 11113/./server
tcp 0 0 127.0.0.1:30004 127.0.0.1:34608 TIME_WAIT -
然后关闭服务器并验证侦听套接字是否已被破坏:
[user@host server]$ sudo netstat -anp | grep 30004
tcp 0 0 127.0.0.1:30004 127.0.0.1:34608 TIME_WAIT -
最后我再次启动服务器,但监听端口不再显示:
[user@host server]$ sudo netstat -anp | grep 30004
tcp 0 0 127.0.0.1:30004 127.0.0.1:34608 TIME_WAIT -
因此客户端无法连接到服务器:
[user@host server]$ telnet localhost 30004
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
我在这里做错了什么?我倾向于认为这是一个配置问题,而不是应用程序中的错误。 这个场景似乎适用于我的笔记本电脑的Ubuntu。上述输出也是在linux盒子上生成的。
更新:这两个环境中另外一个不同的是qt版本。在我的笔记本上我有4.8.6,在linux机器上它是4.6.2。不确定是否重要。
答案 0 :(得分:0)
显然qt库的版本存在问题。我们将其升级到最新的4.x.x,现在问题似乎已得到解决。