QT中TCP UDP编程
来源:互联网 发布:淘宝代购会被投诉吗 编辑:程序博客网 时间:2024/06/08 15:26
软件环境: ubuntu
--------------------------------------------------------------------------------------------------------
最终效果图:
--------------------------------------------------------------------------------------------------------
注意:建好工程后在“.pro”文件中加上“Qt += network”
--------------------------------------------------------------------------------------------------------
服务端:
GUI界面设计:
--------------------------------------------------------------------------------------------------------
实现代码:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include<QtNetwork>
#include<QtNetwork/QTcpSocket>
#include<QtNetwork/QTcpServer>
#include <QTimer>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void init(); //初始化函数用于完成一些诸如建立信号与槽之间的联系和变量给初值的初始化工作。
private slots:
void on_send_clicked();
void newListen(); //建立TCP监听事件
void acceptConnection(); //接受客户端连接
void displayError(QAbstractSocket::SocketError); //显示错误信息
private:
Ui::MainWindow *ui;
QTcpSocket *tcpSocket;
QTcpServer *tcpServer;
};
#endif // MAINWINDOW_H
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
init();
}
void MainWindow::init()
{
timer = new QTimer;
this->tcpServer = new QTcpServer(this);
this->tcpSocket = new QTcpSocket(this);
newListen();
connect(tcpServer,SIGNAL(newConnection()),this,SLOT(acceptConnection()));
//newConnection()用于当有客户端访问时发出信号,acceptConnection()信号处理函数
connect(tcpSocket,SIGNAL(error(QAbstractSocket::SocketError)),
this,SLOT(displayError(QAbstractSocket::SocketError)));
//当tcpSocket在接受客户端连接时出现错误时,displayError(QAbstractSocket::SocketError)进行错误提醒并关闭tcpSocket。
}
void MainWindow::on_send_clicked()
{
this->tcpSocket->write(ui->lineEdit->text().toLatin1());
//用于发送字符消息
}
void MainWindow::newListen()
{
//监听是否有客户端来访,且对任何来访者监听,端口为6666
if(!tcpServer->listen(QHostAddress::Any,6666))
{
qDebug()<<tcpServer->errorString();
close();
return;
}
}
void MainWindow::acceptConnection()
{
//当有客户来访时将tcpSocket接受tcpServer建立的socket
tcpSocket = tcpServer->nextPendingConnection();
}
void MainWindow::displayError(QAbstractSocket::SocketError)
{
qDebug()<<tcpSocket->errorString();
tcpSocket->close();
}
MainWindow::~MainWindow()
{
delete ui;
}
--------------------------------------------------------------------------------------------------------
客服端:
GUI界面设计:
--------------------------------------------------------------------------------------------------------
实现代码:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include<QtNetwork>
#include<QtNetwork/QTcpSocket>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void init();
void newTCPConnect();//用于建立服务端与客户之间的连接函数
private:
Ui::MainWindow *ui;
QTcpSocket *tcpSocket;
private slots:
void revData(); //接收来自服务端的数据
void displayError(QAbstractSocket::SocketError);
};
#endif // MAINWINDOW_H
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
init();
}
void MainWindow::init()
{
this->tcpSocket = new QTcpSocket(this);
newTCPConnect();
//这里我是采用程序启动就自访问服务端(也可根据实际情况采用手动连接手动输入服务端ip的方式。)
connect(tcpSocket,SIGNAL(readyRead()),this,SLOT(revData()));
//readyRead()表示服务端发送数据过来即发动信号,接着revData()
进行处理。
connect(tcpSocket,SIGNAL(error(QAbstractSocket::SocketError)),
this,SLOT(displayError(QAbstractSocket::SocketError)));
}
void MainWindow::revData()
{
QString datas = tcpSocket->readAll();
//接收字符串数据。
ui->lineEdit->setText(datas);
//显示字符串数据。
}
void MainWindow::newTCPConnect()
{
tcpSocket->abort();
tcpSocket->connectToHost("127.0.0.1",6666);
//这里可以根据实际情况在用户界面上进行输入。
}
void MainWindow::displayError(QAbstractSocket::SocketError)
{
qDebug()<<tcpSocket->errorString();
tcpSocket->close();
}
MainWindow::~MainWindow()
{
delete ui;
}
- QT中TCP UDP编程
- Qt中的TCP/UDP编程
- Qt中网络编程(网络接口,TCP,UDP)
- Qt中网络编程(网络接口,TCP,UDP)
- Qt下的tcp,udp编程
- JAVA中TCP/UDP编程实例
- JAVA中TCP/UDP编程实例
- 网络编程中TCP/UDP区别
- qt tcp udp
- TCP/UDP通信编程在Qt中的实现方法
- QT中TCP/UDP通信数据的组织
- QT中TCP/UDP通信数据的组织
- TCP/UDP编程
- TCP/UDP编程
- TCP,UDP基本编程
- .Net TCP/UDP 编程
- TCP、UDP编程介绍
- Linux TCP/UDP编程
- 编写函数,将一个数据插入有序数组,要求插入后数组仍然有序
- odb对象关系映射系统
- 1002. 写出这个数 (20)
- Lock和synchronized比较详解
- 徐登沿的第十三个程序(如何读取五个人的成绩,然后输出它们的平均值)
- QT中TCP UDP编程
- Linux进程的一些基础知识
- 修改eclipse背景色
- 混合开发笔记
- spark搭建
- LightOJ
- 1001. 害死人不偿命的(3n+1)猜想 (15)
- 运算出分数的算24
- FM的快速增量算法猜想