QTcp的bind和listen
时间: 2023-10-11 07:06:00 浏览: 77
QTcpSocket是一个基于TCP协议的套接字类,可以用来进行网络通信。在使用QTcpSocket之前,需要先进行bind和listen操作。
bind:绑定IP地址和端口号,表示该套接字只能接收来自该IP地址和端口号的数据包。
listen:开始监听指定端口号,等待客户端的连接。
下面是QTcp的bind和listen的使用示例:
```c++
QTcpServer* server = new QTcpServer(this); // 创建QTcpServer对象
if (!server->listen(QHostAddress::Any, 8888)) { // 开始监听指定端口号
qDebug() << "Server could not start!";
}
connect(server, SIGNAL(newConnection()), this, SLOT(onNewConnection())); // 当有新的连接时,触发onNewConnection函数
void onNewConnection() {
QTcpSocket* client = server->nextPendingConnection(); // 获取客户端套接字
connect(client, SIGNAL(readyRead()), this, SLOT(onReadyRead())); // 当客户端有数据可读时,触发onReadyRead函数
}
void onReadyRead() {
QTcpSocket* client = qobject_cast<QTcpSocket*>(sender()); // 获取发送信号的套接字
QByteArray data = client->readAll(); // 读取所有可读数据
qDebug() << "Received data: " << data;
}
```
在以上示例中,我们创建了一个QTcpServer对象,并使用listen函数开始监听端口号8888。当有新的连接时,会触发onNewConnection函数,其中获取客户端套接字,并连接readyRead信号和onReadyRead槽函数。当客户端发送数据时,会触发onReadyRead函数,其中读取所有可读数据并输出。
阅读全文