QT中每秒QTcpServer和QTcpSocket互发一个字节信息以确定连接是否正常,请给我完整代码
时间: 2024-02-25 08:52:58 浏览: 60
QT——服务器+客户端进行tcp通信代码.rar
5星 · 资源好评率100%
以下是一个简单的示例代码,用于实现每秒钟互发一个字节信息以确定连接是否正常:
Server端代码:
```cpp
#include <QtNetwork>
int main()
{
QTcpServer server;
server.listen(QHostAddress::Any, 1234);
while (true) {
if (server.hasPendingConnections()) {
QTcpSocket *socket = server.nextPendingConnection();
qDebug() << "New connection from: " << socket->peerAddress().toString();
QTimer *timer = new QTimer(socket);
QObject::connect(timer, &QTimer::timeout, [=]() {
socket->write("A");
socket->flush();
});
timer->start(1000); // 每秒钟发送一次信息
}
}
return 0;
}
```
Client端代码:
```cpp
#include <QtNetwork>
int main()
{
QTcpSocket socket;
socket.connectToHost("127.0.0.1", 1234);
while (true) {
if (socket.state() == QTcpSocket::ConnectedState) {
socket.write("A");
socket.flush();
socket.waitForBytesWritten(1000); // 等待1秒钟
}
else {
qDebug() << "Disconnected from server";
break;
}
}
return 0;
}
```
以上代码实现了一个简单的TCP连接,每秒钟互发一个字节信息以确定连接是否正常。在Server端,我们使用`QTcpServer`监听端口,并在有新的连接时创建一个`QTimer`对象,用于定时发送信息。在Client端,我们使用`QTcpSocket`连接到Server,然后在一个无限循环中,每秒钟发送一个字节信息,等待1秒钟以确保连接正常。如果连接断开,我们将输出一条消息并退出循环。
阅读全文