做网站是否过时了,品牌建设让,购物网站建设 费用,深圳建站公司企业网上的资料太过于书面化#xff0c;所以看起来有的让人云里雾里#xff0c;看不懂C-tcpsockt和S-tcpsocket的关系
所以我稍微画了一下草图帮助大家理解两个套接字之间的关系。字迹有的飘逸勉强看看 下面是代码 服务端#xff1a; MainWindow::MainWindow(QWidget *parent) …网上的资料太过于书面化所以看起来有的让人云里雾里看不懂C-tcpsockt和S-tcpsocket的关系
所以我稍微画了一下草图帮助大家理解两个套接字之间的关系。字迹有的飘逸勉强看看 下面是代码 服务端 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui-setupUi(this); //在头文件创建了qtcpserver,在这里将他设定为listen状态 m_server.listen(QHostAddress::Any,8888); //当有客服端链接的地址跟接口与listen的一致时m_server会发出信号【*注意】 connect(m_server,QTcpServer::newConnection,this,MainWindow::new_connect); } void MainWindow::new_connect() { QMessageBox::information(this,connect sation,connect success);//提示收到信号链接成功 QTcpSocket* s_socketm_server.nextPendingConnection(); //让服务器端的tcpsocket与客户端的链接或者说接受链接请求 //给客户端发送数据 s_socket-write(hello world); //接收客户端的数据 //需要先接收到读取信号后server才能正常读取数据 connect(s_socket,QTcpSocket::readyRead,[]() { QString ss_socket-readAll(); qDebug()s; }); 【*注意】严谨来讲这里应该先connect后再把m_server.listen。先将信号和槽绑定等到有信号时就会执行槽函数。 客户端 void MainWindow::on_pushButton_clicked() { //寻找输入到ip、port文本编辑框对应的server socket.connectToHost(ui-IP-text(),ui-PORT-text().toShort()); //给套接字写入数据 socket.write(ui-textEdit-toPlainText().toUtf8()); //若客户端收到数据 connect(socket,QTcpSocket::readyRead,[]() { QString msgsocket.readAll() ; qDebug()msg; }); }