2

我正在开发一个 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 box 上产生的。

更新:这两个环境中的另一件事是 qt 版本。在我的笔记本上我有 4.8.6,在 linux 机器上它是 4.6.2。不确定是否重要。

4

1 回答 1

0

显然 qt 库的版本存在问题。我们将其升级到最新的 4.xx,现在问题似乎已解决。

于 2014-09-26T19:56:59.980 回答