Qt QTcpsocket
时间: 2025-02-14 08:10:31 浏览: 47
### Qt 中 `QTcpSocket` 类的使用方法
#### 创建和连接到服务器
创建并初始化 `QTcpSocket` 对象后,可以调用 `connectToHost()` 方法尝试建立与指定主机和端口的 TCP 连接。如果连接失败,则可以通过 `errorString()` 获取错误描述。
```cpp
#include <QTcpSocket>
#include <QDebug>
int main() {
QTcpSocket socket;
socket.connectToHost("127.0.0.1", 1234);
if (!socket.waitForConnected(5000)) { // 设置超时时间为5秒
qDebug() << "Failed to connect to server:" << socket.errorString();
return -1;
}
qDebug() << "Connected to server.";
}
```
此代码片段展示了如何设置一个基本的客户端连接过程[^3]。
#### 发送数据给服务器
一旦成功建立了连接,就可以通过 `write()` 或者 `sendTextMessage()` (对于文本消息) 来发送数据包给远程服务器:
```cpp
QString message = "Hello Server";
if(socket.write(message.toUtf8()) != -1){
qDebug()<<"Data sent successfully!";
}else{
qDebug()<<"Error sending data:"<<socket.errorString();
}
```
这段代码说明了向已连接的服务端写入字符串的方式[^1]。
#### 接收来自服务器的数据
为了接收服务端返回的信息,通常会监听 `readyRead()` 信号,并读取可用的数据流:
```cpp
QObject::connect(&socket, &QTcpSocket::readyRead, [&]() {
while (socket.canReadLine()){
QString line = QString::fromUtf8(socket.readLine());
qDebug()<<line.trimmed();
}
});
```
上述例子解释了当有新数据到达时触发回调函数处理输入的方法。
#### 断开连接
最后,在完成所有的交互之后应当关闭套接字以释放资源:
```cpp
socket.disconnectFromHost();
// Wait until the connection is closed.
if(!socket.waitForDisconnected(5000)){
qDebug()<<"Error disconnecting:"<<socket.errorString();
} else {
qDebug()<<"Successfully disconnected from host.";
}
```
这部分内容强调了安全断开端点间链接的重要性以及相应的操作方式。
阅读全文
相关推荐


















