day 5

//服务器/*********************************/

QTcpServer* server=new QTcpServer(this);
//一个按钮启动服务器的槽函数
{
   quint16 prot=8888;
   listen(QHostAddress::Any,port)
   connect(server,&QTcpServer::newConnection,this,&槽函数);
}
//newConnection的槽函数
{
   //接受客户端连接的套接字
    QTcpSocket *s=server->nextPendingConnection();
    
    //如果客户端发送数据了,那么套接字会发送readyRead信号
    connect(server,&QTcpSocket::readyRead,this,&槽函数);
}
//readyRead的槽函数
{
     QByteArray msg=s->readAll();
     //展示到ui上
     //需要转化QString::fromLocal8Bit(msg)
     s->write(msg);
}
/*******************************************/
     //客户端
QTcpSocket *socket=new QTcpSocket(this);
//如果连接服务器成功,则客户端socket会自动发送一个connected信号
//由于只连接一次,所以最好连接写在构造函数里
connect(socket,&QTcpSocket::connected,this,槽函数);
//同样,服务器发送数据过来会自动发送readyread信号
connect(socket,&QTcpSocket::readyRead,this,槽函数);
//先连接客户端
socket->connectToHost(hostName,port);
//connected的槽函数
{
    //提示连接成功
    //给服务器写消息
    socket->write(msg);
}
//readyread信号对应槽函数
{
    //读取数据
    QByteArray msg=socket->readAll();
    //在ui上显示
    ...
}
    //断开连接
    socket->disconnectFromHost();
    //断开后悔自动发射一个disconnected的信号
    //然后我们可以连接此信号到我们自定义的槽函数实现我们想要的功能

整理服务器客户端的通信模型

你可能感兴趣的:(qt,开发语言,c++)