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核心思想

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...