qt中使用socket套接字做tcp/Udp通信需要配置和引用的文件

88 篇文章 17 订阅
64 篇文章 10 订阅

.pro中加入

LIBS += -lpthread libwsock32 libws2_32
在头文件中加入

#include <QCoreApplication>
#include <WinSock2.h>
#include <Windows.h>
#include <iostream>
using namespace std;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt实现TCPUDP双线程,可以使用QtQTcpSocket和QUdpSocket类来实现。 首先,在服务器端,你可以创建一个QTcpServer对象来监听和接受TCP连接,并在每个新的连接上创建一个QTcpSocket对象来处理通信。同时,你也可以创建一个QUdpSocket对象来处理UDP通信。 以下是一个简单的示例代码,展示了如何在服务器端使用TCPUDP双线程: ```cpp // server.h #ifndef SERVER_H #define SERVER_H #include <QMainWindow> #include <QTcpServer> #include <QTcpSocket> #include <QUdpSocket> namespace Ui { class Server; } class Server : public QMainWindow { Q_OBJECT public: Server(QWidget *parent = nullptr); ~Server(); private slots: void on_pushButton_listen_clicked(); // TCP侦听 void server_new_connect(); // 创建新连接 void socket_read_data(); // TCP读取缓冲区数据 void read_data(); // UDP读取缓冲区数据 void on_comboBox_currentIndexChanged(); // 界面转换 private: Ui::Server *ui; QUdpSocket *uServer; // UDP套接字对象 QTcpServer *mServer; QTcpSocket *mSocket; // TCP套接字对象 int i1, i2; int j1, j2; }; #endif // SERVER_H ``` ```cpp // server.cpp #include "server.h" #include <QApplication> #include <QTimer> Server::Server(QWidget *parent) : QMainWindow(parent) , ui(new Ui::Server) { ui->setupUi(this); // 创建QTcpServer对象 mServer = new QTcpServer(this); // 连接新的连接信号和槽函数 connect(mServer, &QTcpServer::newConnection, this, &Server::server_new_connect); // 创建QUdpSocket对象 uServer = new QUdpSocket(this); // 连接readyRead信号和槽函数 connect(uServer, &QUdpSocket::readyRead, this, &Server::read_data); } Server::~Server() { delete ui; } void Server::on_pushButton_listen_clicked() { // 开始监听指定的端口 if (mServer->listen(QHostAddress::Any, ui->lineEdit_port->text().toInt())) { ui->textEdit_info->append("Server is listening..."); } else { ui->textEdit_info->append("Failed to start server!"); } } void Server::server_new_connect() { // 获取新的连接 mSocket = mServer->nextPendingConnection(); // 连接readyRead信号和槽函数 connect(mSocket, &QTcpSocket::readyRead, this, &Server::socket_read_data); // 输出连接信息 ui->textEdit_info->append("New client connected!"); } void Server::socket_read_data() { // 读取缓冲区数据 QByteArray data = mSocket->readAll(); // 处理数据 // ... } void Server::read_data() { // 读取缓冲区数据 QByteArray data = uServer->readAll(); // 处理数据 // ... } void Server::on_comboBox_currentIndexChanged() { // 界面转换 // ... } ``` 在上述示例,`Server`类继承自`QMainWindow`,在构造函数创建了`QTcpServer`和`QUdpSocket`对象,并连接了相应的信号和槽函数。其,`on_pushButton_listen_clicked`槽函数用于开始监听指定的端口,`server_new_connect`槽函数用于处理新的TCP连接,`socket_read_data`槽函数用于读取TCP缓冲区数据,`read_data`槽函数用于读取UDP缓冲区数据,`on_comboBox_currentIndexChanged`槽函数用于界面转换。 请注意,以上代码只是一个简单示例,你可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值