• 26108阅读
  • 8回复

QT4中, QTcpSocket 调用 connectToHost()后, 怎么判断是不是连接成功了 [复制链接]

上一主题 下一主题
离线miracleno1
 

只看楼主 倒序阅读 楼主  发表于: 2010-01-22
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
求助  QT4中, QTcpSocket 调用 connectToHost()后, 怎么判断是不是连接成功了?
离线benbenmajia

只看该作者 1楼 发表于: 2010-01-22
输出该函数返回值,比较
安然.....
离线午小夜

只看该作者 2楼 发表于: 2010-01-22
The socket is opened in the given openMode and first enters HostLookupState, then performs a host name lookup of hostName. If the lookup succeeds, hostFound() is emitted and QAbstractSocket enters ConnectingState. It then attempts to connect to the address or addresses returned by the lookup. Finally, if a connection is established, QAbstractSocket enters ConnectedState and emits connected().


Have a look at QAbstractSocket  class:

Signals

void    connected ()
void    disconnected ()
void    error ( QAbstractSocket::SocketError socketError )
void    hostFound ()
void    proxyAuthenticationRequired ( const QNetworkProxy & proxy, QAuthenticator * authenticator )
void    stateChanged ( QAbstractSocket::SocketState socketState )
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线miracleno1

只看该作者 3楼 发表于: 2010-01-22
这个,就算是连接失败,也会继续向后执行, 只能设置一标记,如果收到 void    error ( QAbstractSocket::SocketError socketError ) 信号, 设置一下这个标记,判断是错误的。
离线午小夜

只看该作者 4楼 发表于: 2010-01-22
socket打開后首先進入  查找主機狀態,查找到了,會有hostFound()信號發出。你可以把這個信號綁定一個槽,在槽裏改變一個bool變量以標記是否查找到主機了。查找到了主機后,socket進入正在連接狀態,連接建立后,會有connected()信號發出。你可以把這個信號綁定一個槽,在槽裏改變一個bool變量以標記是否連接成功到主機了。之後,socket進入已連接狀態。
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线miracleno1

只看该作者 5楼 发表于: 2010-01-22
好的, 谢谢
离线miracleno1

只看该作者 6楼 发表于: 2010-01-22
感觉不如直接使用c库接口,很是麻烦
离线午小夜

只看该作者 7楼 发表于: 2010-01-22
其實它直接就有這個信號  void    disconnected ()
void QAbstractSocket::disconnected ()   [signal]
This signal is emitted when the socket has been disconnected.

Warning: If you need to delete the sender() of this signal in a slot connected to it, use the deleteLater() function.
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线miracleno1

只看该作者 8楼 发表于: 2010-04-30
就像有人说的,用30W行代码封装了3W行代码
快速回复
限100 字节
 
上一个 下一个