• 12259阅读
  • 8回复

[提问]QTcpSocket建立连接失败的问题(qt5.7,windows) [复制链接]

上一主题 下一主题
离线wind_133
 

只看楼主 倒序阅读 楼主  发表于: 2016-08-12
代码很简单,就是点一下按钮,就连接指定的地址和端口号


void MainWindow::on_pushButton_clicked()
{
    QTcpSocket client_socket_ctrl;
    client_socket_ctrl.connectToHost("10.1.10.137",21);
    std::cout<<client_socket_ctrl.state()<<std::endl;
}

最后state()返回了个2,查了文档是说连接正在建立,但是没有建立完成。


2
The socket has started establishing a connection.

用tcpdump抓了包,发现3次握手没成功



哪个地方出错了呢?
离线uidab

只看该作者 1楼 发表于: 2016-08-12
我怎么觉得你这个局部变量,出了这个函数就没了。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线prcseraph

只看该作者 2楼 发表于: 2016-08-12
QTcpSocket分同步,异步,你不使用同步方式,怎么可能立即返回正确状态值呢?
查看下帮助waitForConnected
离线wind_133

只看该作者 3楼 发表于: 2016-08-12
回 prcseraph 的帖子
prcseraph:QTcpSocket分同步,异步,你不使用同步方式,怎么可能立即返回正确状态值呢?
查看下帮助waitForConnected (2016-08-12 17:07) 

谢谢回帖,我刚才在网上也查到了,是必须用waitforconnect之后qtcpsocket才会真正去建立的连接的,可是之前也看过qtcpsocket的帮助文档,文档里在哪里提到了waitforconnec呢?
离线kaon

只看该作者 4楼 发表于: 2016-08-13
离线never_forget

只看该作者 5楼 发表于: 2016-08-13
client_socket_ctrl.connectToHost("10.1.10.137",21);,这个函数有问题,参数是String吗?是不是奥这样client_socket_ctrl.connectToHost(QHostAddress("10.1.10.137"),21);,楼主可以看一下。。。
离线nigoole

只看该作者 6楼 发表于: 2016-08-15
回 never_forget 的帖子
never_forget:client_socket_ctrl.connectToHost("10.1.10.137",21);,这个函数有问题,参数是String吗?是不是奥这样client_socket_ctrl.connectToHost(QHostAddress("10.1.10.137"),21);,楼主可以看一下。。。 (2016-08-13 12:24) 

那么用没有问题,只是不严谨,QHostAddress的构造参数就是QString,存在一个隐形转换
有句话说得好:好好学习,天天向上。加油~~!有上船的朋友联系企鹅393320854
离线wind_133

只看该作者 7楼 发表于: 2016-08-15
谢谢各位的指导
离线horseplay

只看该作者 8楼 发表于: 2016-08-19
你建立的客户端是在按键处理子程序中进行的,不知道退出子程序后,这个客户端是否还在?
快速回复
限100 字节
 
上一个 下一个