A simple communication between TCP server and client is established on QT to achieve the following results
First remember to add in the pro file in the engineering directory so that you can open Network services
QT + + Network
Mainwindow.h
#include "tcpserverwindow.h" #include "ui_tcpserverwindow.h" Tcpserverwindow::tcpserverwindow (Qwidget *parent): Qdia
Log (parent), UI (new Ui::tcpserverwindow) {ui->setupui (this);
Tcpsocket=new Qtcpsocket (this);
Tcpserver=new Qtcpserver (this);
Setlistener (); /** signal and Slot **///newconnection () is used to signal when there is a client access, acceptconnection () signal processing function connect (tcpserver,signal ()), th
Is,slot (Acceptconnection ()));
When an error occurs while Tcpsocket is accepting a client connection, DisplayError (qabstractsocket::socketerror) makes an error reminder and closes Tcpsocket. Connect (tcpsocket,signal (Error (Qabstractsocket::socketerror)), SLOT (DisplayError (Qabstractsocket::socketerror))
); //Listen for client visits and listen to any visitors, the port is 6666 void Tcpserverwindow::setlistener () {if!tcpserver->listen (qhostaddress::any
, 6666)) {Qdebug () <<tcpserver->errorstring ();
Close ();
}else {qdebug () << "listening"; } void Tcpserverwindow::d isplayerror (qabstractsocket::socketerror) {qdebug () ≪<tcpsocket->errorstring ();
Tcpsocket->close ();
} void Tcpserverwindow::acceptconnection () {tcpsocket=tcpserver->nextpendingconnection ();}
Tcpserverwindow::~tcpserverwindow () {Delete UI;} Click the Send button to send message void tcpserverwindow::on_sendbtn_clicked () {//Sent in Utf-8 character set format to support Chinese tcpsocket->write (ui->sendtext
->text (). ToUtf8 ());
Sent in Latin character set format//Tcpsocket->write (Ui->sendtext->text (). ToLatin1 ());
}
Mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
Mainwindow::mainwindow (Qwidget *parent):
Qmainwindow (parent),
UI (new Ui::mainwindow)
{
ui->setupui (this);
Tcpserverwindow=new Tcpserverwindow;
Tcpclientwindow=new Tcpclientwindow;
}
Mainwindow::~mainwindow ()
{
delete ui;
}
void mainwindow::on_server_clicked ()
{
tcpserverwindow->show ();
}
void mainwindow::on_client_clicked ()
{
tcpclientwindow->show ();
}
client***************
Tcpclientwindow.h
#ifndef tcpclientwindow_h
#define TCPCLIENTWINDOW_H
#include <QtNetwork/QTcpSocket>
#include <QtNetwork>
#include <QDialog>
namespace Ui {
class Tcpclientwindow;
}
Class Tcpclientwindow:public Qdialog
{
q_object public
:
explicit Tcpclientwindow (Qwidget *parent = 0);
~tcpclientwindow ();
Private:
Ui::tcpclientwindow *ui;
Qtcpsocket *tcpsocket;
void Newtcpconnection ();
Private slots:
void DisplayError (qabstractsocket::socketerror);
void Revdata ();
#endif//Tcpclientwindow_h
Tcpclientwindow.cpp
#include "tcpclientwindow.h" #include "ui_tcpclientwindow.h" Tcpclientwindow::tcpclientwindow (Qwidget *parent): Qdia
Log (parent), UI (new Ui::tcpclientwindow) {ui->setupui (this);
Tcpsocket=new Qtcpsocket (this);
Newtcpconnection ();
The/** signal and the slot **///readyread () indicate that the server sends the data to start the signal and then Revdata () to process it.
Connect (tcpsocket,signal (Readyread ()), This,slot (Revdata ())); Connect (tcpsocket,signal (qabstractsocket::socketerror), This,slot (DisplayError (qabstractsocket::
SocketError)));
///Receive string void Tcpclientwindow::revdata () {QString data=tcpsocket->readall ();
Ui->receivetext->settext (data);
}//New connection void Tcpclientwindow::newtcpconnection () {tcpsocket->abort ();
Tcpsocket->connecttohost ("127.0.0.1", 6666);
} void Tcpclientwindow::d isplayerror (qabstractsocket::socketerror) {qdebug () <<tcpsocket->errorstring ();
Tcpsocket->close ();
} tcpclientwindow::~tcpclientwindow () {Delete UI;}
server***************
Tcpserverwindow.h
#ifndef tcpserverwindow_h
#define TCPSERVERWINDOW_H
#include <QtNetwork/QTcpSocket>
#include <QtNetwork/QTcpServer>
#include <QDialog>
namespace Ui {
class Tcpserverwindow;
}
Class Tcpserverwindow:public Qdialog
{
q_object public
:
explicit Tcpserverwindow (Qwidget *parent = 0);
~tcpserverwindow ();
Private:
Ui::tcpserverwindow *ui;
Qtcpsocket *tcpsocket;
Qtcpserver *tcpserver;
void Setlistener ();
Private slots:
void Acceptconnection ();
void DisplayError (qabstractsocket::socketerror);
void on_sendbtn_clicked ();
#endif//Tcpserverwindow_h
Tcpserverwindow.cpp
#include "tcpserverwindow.h" #include "ui_tcpserverwindow.h" Tcpserverwindow::tcpserverwindow (Qwidget *parent): Qdia
Log (parent), UI (new Ui::tcpserverwindow) {ui->setupui (this);
Tcpsocket=new Qtcpsocket (this);
Tcpserver=new Qtcpserver (this);
Setlistener (); /** signal and Slot **///newconnection () is used to signal when there is a client access, acceptconnection () signal processing function connect (tcpserver,signal ()), th
Is,slot (Acceptconnection ()));
When an error occurs while Tcpsocket is accepting a client connection, DisplayError (qabstractsocket::socketerror) makes an error reminder and closes Tcpsocket. Connect (tcpsocket,signal (Error (Qabstractsocket::socketerror)), SLOT (DisplayError (Qabstractsocket::socketerror))
); //Listen for client visits and listen to any visitors, the port is 6666 void Tcpserverwindow::setlistener () {if!tcpserver->listen (qhostaddress::any
, 6666)) {Qdebug () <<tcpserver->errorstring ();
Close ();
}else {qdebug () << "listening"; } void Tcpserverwindow::d isplayerror (qabstractsocket::socketerror) {qdebug () ≪<tcpsocket->errorstring ();
Tcpsocket->close ();
} void Tcpserverwindow::acceptconnection () {tcpsocket=tcpserver->nextpendingconnection ();}
Tcpserverwindow::~tcpserverwindow () {Delete UI;} Click the Send button to send message void tcpserverwindow::on_sendbtn_clicked () {//Sent in Utf-8 character set format to support Chinese tcpsocket->write (ui->sendtext
->text (). ToUtf8 ());
Sent in Latin character set format//Tcpsocket->write (Ui->sendtext->text (). ToLatin1 ());
}