目的

TCP通信可以说是最基础的东西了,也是面试经常问的问题,记得10年前,面试浪潮时,就是问的TCP连接的过程。
时间长了不用,感觉一些东西模糊了,基础的东西还是需要清晰的,而且,现在是QT的TCP,用法也有一些自己的特点。
这里主要说的就是服务端与多客户端的通信,这也是非常常用的一种模式。
先说说基本步骤:
服务器端编程的步骤:
1:加载套接字库,创建套接字;
2:绑定套接字到一个IP地址和一个端口上(bind());
3:将套接字设置为监听模式等待连接请求(listen());
4:请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept());
5:用返回的套接字和客户端进行通信(send()/recv());
6:返回,等待另一连接请求;
7:关闭套接字,关闭加载的套接字库。
客户端编程的步骤:
1:加载套接字库,创建套接字;
2:向服务器发出连接请求(connect());
3:和服务器端进行通信(send()/recv());
4:关闭套接字,关闭加载的套接字库。

情况

就是实现服务端与多个客户端的通信:

server端关键代码:

......
tcpServer=new QTcpServer(this);
 connect(tcpServer,SIGNAL(newConnection()),this,SLOT(onNewConnection()));
......
void MainWindow::onNewConnection()
{
   
//    ui->plainTextEdit->appendPlainText("有新连接");
    tcpSocket = tcpServer->nextPendingConnection(); //创建socket
    connect(tcpSocket, SIGNAL(connected()),
            this, SLOT(onClientConnected()));
    onClientConnected();//
    connect(tcpSocket, SIGNAL(disconnected()),
            this, SLOT(onClientDisconnected()));
    connect(tcpSocket,SIGNAL(stateChanged(QAbstractSocket::SocketState))

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部