Qt TCP通讯简易Demo
来源:互联网 发布:淘宝评价采集工具 编辑:程序博客网 时间:2024/06/05 09:48
在Qt上建立Tcp server 和 client 间的简易通讯,实现效果如下
首先要记得在工程目录中的pro文件中 加入 ,这样才能开启网络服务
QT += network
//mainwindow.h
#include "tcpserverwindow.h"#include "ui_tcpserverwindow.h"TcpServerWindow::TcpServerWindow(QWidget *parent) : QDialog(parent), ui(new Ui::TcpServerWindow){ ui->setupUi(this); tcpSocket=new QTcpSocket(this); tcpServer=new QTcpServer(this); setListener(); /**信号与槽**/ //newConnection()用于当有客户端访问时发出信号,acceptConnection()信号处理函数 connect(tcpServer,SIGNAL(newConnection()),this,SLOT(acceptConnection())); //当tcpSocket在接受客户端连接时出现错误时,displayError(QAbstractSocket::SocketError)进行错误提醒并关闭tcpSocket。 connect(tcpSocket,SIGNAL(error(QAbstractSocket::SocketError)),SLOT(displayError(QAbstractSocket::SocketError)));} //监听是否有客户端来访,且对任何来访者监听,端口为6666void TcpServerWindow::setListener(){ if(!tcpServer->listen(QHostAddress::Any,6666)){ qDebug()<<tcpServer->errorString(); close(); }else { qDebug()<<"listening"; }}void TcpServerWindow::displayError(QAbstractSocket::SocketError){ qDebug()<<tcpSocket->errorString(); tcpSocket->close();}void TcpServerWindow::acceptConnection(){ tcpSocket=tcpServer->nextPendingConnection();}TcpServerWindow::~TcpServerWindow(){ delete ui;}//点击发送按钮发送消息void TcpServerWindow::on_SendBtn_clicked(){ //以utf-8字符集格式发送,支持中文 tcpSocket->write(ui->SendText->text().toUtf8()); //以拉丁字符集格式发送// 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();}
//tcpclientwindow.h
#ifndef TCPCLIENTWINDOW_H#define TCPCLIENTWINDOW_H#include<QtNetwork/QTcpSocket>#include<QtNetwork>#include <QDialog>namespace Ui {class TcpClientWindow;}class TcpClientWindow : public QDialog{ Q_OBJECTpublic: 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) : QDialog(parent), ui(new Ui::TcpClientWindow){ ui->setupUi(this); tcpSocket=new QTcpSocket(this); newTcpConnection(); /**信号与槽**/ //readyRead()表示服务端发送数据过来即发动信号,接着revData()进行处理。 connect(tcpSocket,SIGNAL(readyRead()),this,SLOT(revData())); connect(tcpSocket,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(displayError(QAbstractSocket::SocketError)));} //接收字符串void TcpClientWindow::revData(){ QString data=tcpSocket->readAll(); ui->ReceiveText->setText(data);}//新建连接void TcpClientWindow::newTcpConnection(){ tcpSocket->abort(); tcpSocket->connectToHost("127.0.0.1",6666); }void TcpClientWindow::displayError(QAbstractSocket::SocketError){ qDebug()<<tcpSocket->errorString(); tcpSocket->close();}TcpClientWindow::~TcpClientWindow(){ delete ui;}
//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_OBJECTpublic: 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) : QDialog(parent), ui(new Ui::TcpServerWindow){ ui->setupUi(this); tcpSocket=new QTcpSocket(this); tcpServer=new QTcpServer(this); setListener(); /**信号与槽**/ //newConnection()用于当有客户端访问时发出信号,acceptConnection()信号处理函数 connect(tcpServer,SIGNAL(newConnection()),this,SLOT(acceptConnection())); //当tcpSocket在接受客户端连接时出现错误时,displayError(QAbstractSocket::SocketError)进行错误提醒并关闭tcpSocket。 connect(tcpSocket,SIGNAL(error(QAbstractSocket::SocketError)),SLOT(displayError(QAbstractSocket::SocketError)));} //监听是否有客户端来访,且对任何来访者监听,端口为6666void TcpServerWindow::setListener(){ if(!tcpServer->listen(QHostAddress::Any,6666)){ qDebug()<<tcpServer->errorString(); close(); }else { qDebug()<<"listening"; }}void TcpServerWindow::displayError(QAbstractSocket::SocketError){ qDebug()<<tcpSocket->errorString(); tcpSocket->close();}void TcpServerWindow::acceptConnection(){ tcpSocket=tcpServer->nextPendingConnection();}TcpServerWindow::~TcpServerWindow(){ delete ui;}//点击发送按钮发送消息void TcpServerWindow::on_SendBtn_clicked(){ //以utf-8字符集格式发送,支持中文 tcpSocket->write(ui->SendText->text().toUtf8()); //以拉丁字符集格式发送// tcpSocket->write(ui->SendText->text().toLatin1());}
0 0
- Qt TCP通讯简易Demo
- QT TCP通讯
- QT中tcp/Ip通讯
- C#下使用TCP通讯Demo
- QT关于网络TCP通讯的记录
- Qt:简易的TCP服务器和客户端
- JAVA模拟客户机与服务器实现简易的TCP通讯
- C++ 基于TCP通讯的即时通信服务器DEMO
- QT笔记(1)——TCP通讯学习
- QT关于网络TCP通讯的记录(二)
- QT TCP通讯无法收到数据的解决方案
- QT学习:基于TCP/IP的简易群聊系统
- TCP通讯
- TCP通讯
- TCP通讯
- TCP通讯
- tcp通讯
- 简易TCP
- openldap设置ACL
- 15.3 控制层(Controller)的注解驱动
- 安装apk的代码
- centos7中安装jdk1.8
- 小易的升级之路
- Qt TCP通讯简易Demo
- Windows PE第九章 线程局部存储
- 原子变量和CAS算法
- 单个java文件编译为.class文件的方法
- 【C#】Event事件的订阅和发布
- HDU1372 Knight Moves(bfs)
- 微信小程序尝鲜一个月现状分析
- 剪切板
- Android|图形图像之ImageView.ScaleType