Usando servidor TCP y cliente en Qt
TCP (Protocolo de control de transmisión) es un protocolo de comunicación de Internet confiable y altamente optimizado que se usa ampliamente en diversas aplicaciones de red. En este blog, presentaremos cómo usar el servidor y cliente TCP en Qt.
Crear un servidor TCP usando Qt
Para crear un servidor TCP usando Qt, debe completar los siguientes pasos:
Paso 1: crear el objeto QTcpServer
QTcpServer *server = new QTcpServer(this);
Paso 2: escuche las solicitudes de conexión
Antes de comenzar a escuchar, debe utilizar el método listening() para especificar el número de puerto del servicio y escuchar las solicitudes de conexión desde una dirección IP específica.
if (!server->listen(QHostAddress::Any, 12345))
{
qDebug() << "Failed to start server";
return;
}
Paso 3: Manejar nuevas solicitudes de conexión
Cada vez que llega una nueva solicitud de conexión al servidor, QTcpServer le notificará emitiendo la señal newConnection(). Puede utilizar el método aceptar() para aceptar la conexión y crear un nuevo objeto QTcpSocket para enviar y recibir mensajes.
void MyTcpServer::newConnection()
{
QTcpSocket *socket = server->nextPendingConnection();
connect(socket, SIGNAL(readyRead()), this, SLOT(readData()));
connect(socket, SIGNAL(disconnected()), socket, SLOT(deleteLater()));
}
void MyTcpServer::readData()
{
QTcpSocket *socket = static_cast<QTcpSocket *>(sender());
QByteArray data = socket->readAll();
// 处理接收到的数据
}
Paso 4: enviar datos
Utilice el método write() de QTcpSocket para enviar sus datos al cliente conectado.
socket->write("Hello world");
Crear cliente TCP usando Qt
Para crear un cliente TCP usando Qt, debe completar los siguientes pasos:
Paso 1: crear el objeto QTcpSocket
QTcpSocket *m_socket = new QTcpSocket(this);
Paso 2: Conéctese al servidor
Utilice el método connectToHost() para conectar el socket al host y puerto de destino. Una vez que la conexión sea exitosa, QTcpSocket enviará la señal conectada ().
m_socket->connectToHost(QHostAddress("127.0.0.1"), 12345);
Paso 3: enviar y recibir datos
Utilice el método write() para enviar datos al servidor y procesar los datos recibidos a través de la señal readyRead().
void MyTcpClient::sendData(QString data)
{
m_socket->write(data.toUtf8().constData());
}
void MyTcpClient::readData()
{
QString data = m_socket->readAll();
// 处理接收到的数据
}
Resumir
El uso de servidores y clientes TCP en Qt es un método confiable y eficiente para la comunicación en red. Las clases QTcpServer y QTcpSocket proporcionan una solución orientada a objetos que le permite desarrollar fácilmente varios tipos de aplicaciones de red.
Sin embargo, tenga en cuenta los retrasos y excepciones que pueden ocurrir por diversos motivos (como cortes de red, hosts remotos que cierran conexiones, etc.) y asegúrese de manejar estas situaciones en su código para garantizar la estabilidad de la aplicación.