QT_Socket_tcp通信
创始人
2024-04-04 11:46:54
0

文章目录

  • 一、项目介绍
  • 二、程序设计
    • 1. Server
    • 2. Client
  • 三、Ui界面
    • 1. Server
    • 2. Client
  • 四、程序源码


一、项目介绍

本篇为基于QT下的Socket编程,其首要部分为QT基础,不懂的可以返回我主页查看 “ QT分栏 ” 的相关文章,其次为Socket编程TCP通信,可查看文章 “ TCP传输控制协议 ” 和“ Socket编程基础 ”进行食用。

本篇QT的编程环境为Ubuntu-20.04,在Windows下也可以直接运行,这里笔者再提一下ubuntu与windows文件传输的问题,俩者可设立共享文件夹,实现不同系统下文件共享,详细操作可移步 “ 实现虚拟机下“ Linux与Windows 共享文件夹 ” 。

本项目最终实现:客户端在接口处输入服务器IP地址与端口号(Ubuntu下输入ifconfig查看ip信息),连接成功后双方会在界面处显示“客户端/服务器 连接成功”,然后双方就可以在发送区输入数据进行通信,根据接收到的不同数据 进行不同操作。
在这里插入图片描述

二、程序设计

1. Server

  1. 创建套接字
tcpserver=new QTcpServer(this);//指定父对象 回收空间
  1. 绑定ip与端口,进入监听状态
 tcpserver->listen(QHostAddress::Any,8080);//绑定当前网卡所有的ip 绑定端口 也就是设置服务器地址和端口号
  1. 建立连接
connect(tcpserver,&QTcpServer::newConnection,[=](){};
  1. 创建通信套接字
tcpsocket=tcpserver->nextPendingConnection();
  1. 获取通信套接字的控制信息,并显示“客户端连接成功”
QString ip=tcpsocket->peerAddress().toString();//获取连接的 ip地址
quint16 port=tcpsocket->peerPort();//获取连接的 端口号
QString temp=QString("[%1:%2] 客服端连接成功").arg(ip).arg(port);
ui->textEditRead->setText(temp);  //显示连接成功
  1. 接收客户端消息
connect(tcpsocket,&QTcpSocket::readyRead,[=](){          QString str=tcpsocket->readAll(); //从通信套接字中取出内容});
  1. 发送消息给客户端
    //获取编辑区域的内容QString str=ui->textEditWrite->toPlainText();//写入通信套接字 协议栈自动发送tcpsocket->write(str.toUtf8().data());
  1. 关闭套接字,断开连接
	//通信套接字主动与服务端断开连接tcpsocket->disconnectFromHost();//结束聊天//关闭 通信套接字tcpsocket->close();tcpsocket=nullptr;
}

2. Client

  1. 创建通信套接字
tcpsocket=new QTcpSocket(this);
  1. 获取服务器IP地址和端口号
	QString IP=ui->lineEditIP->text();quint16 Port=ui->lineEditPort->text().toInt();
  1. 向服务器申请连接
tcpsocket->connectToHost(IP,Port);
  1. 连接服务器并显示“服务器连接成功”
connect(tcpsocket,&QTcpSocket::connected,[=](){ui->textEditRead->setText("服务器连接成功!");});
  1. 向服务器发送消息
	QString str=ui->textEditWrite->toPlainText();//将信息写入到通信套接字tcpsocket->write(str.toUtf8().data());
  1. 接收服务器消息
connect(tcpsocket,&QTcpSocket::readyRead,[=](){QString str=tcpsocket->readAll();};
  1. 关闭套接字,断开连接
	tcpsocket->disconnectFromHost();//断开与服务器的连接tcpsocket->close();//关闭通信套接字

三、Ui界面

1. Server


server00665675Serverfont: 16pt "Adobe Arabic";2802010141服务器10070521241font: 12pt "Adobe Arabic";501163131501603141502103131100340521241font: 12pt "Adobe Arabic";50386313150430314150480313116061011141发送41061011141关闭

在这里插入图片描述

2. Client


client00665675Clientfont: 14pt "Adobe Arabic";503017141服务器 IP 地址:1009010131端口号:2303019131192.168.229.1230901913188884625012151连接80150551201font: 12pt "Adobe Arabic";80370551211font: 12pt "Adobe Arabic";30186313130226313130270313130410313130456313130500313115061011040发送40061010141关闭

在这里插入图片描述

四、程序源码

若需程序源码可在评论区留言QQ邮箱或直接私信即可

上一篇:虚拟机识别

下一篇:Spring核心思想

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...