当前位置: 首页 > wzjs >正文

古典风格网站模板wordpress 食谱主题

古典风格网站模板,wordpress 食谱主题,企业微信网站怎么建设,手机制作软件下载tcp协议下有服务器和客户端两个实体 在服务器这边涉及到的函数有:socket,bind,listen,accept,send/recv 在客户端这边涉及到的函数有:socket,connect,send/recv 也就是说客户端调用connect,然后服务器这边调用accpet(接受连接&…

tcp协议下有服务器和客户端两个实体

在服务器这边涉及到的函数有:socket,bind,listen,accept,send/recv

在客户端这边涉及到的函数有:socket,connect,send/recv

也就是说客户端调用connect,然后服务器这边调用accpet(接受连接)来处理。

下面我们来讲一下qt中如何进行tcp通信。

Qt 提供了强大的网络模块,TCP 主要使用两个类 :

类名说明
QTcpSocket客户端套接字,主动发起连接
QTcpServer服务端监听,接受客户端连接请求

我们需要先在pro文件中加上network模块

QT += network

接着我们来介绍客户端和服务器要怎么编写:

客户端

首先,我们要创建一个项目,名字取为TCPClient(基类选择 QWidget)

然后创建socket对象,详细的我就不写了,大家懂的,大致如下:

#include<QTCPSokcet>
#include<QHostAddress>
QTCPSOcket *socket;
在构造函数中:
socket=new QTcpSocket;//创建socket对象

然后是设计ui界面:

设计ui界面:

ipLineEdit portLineEdit label1(服务器ip) label 2(服务器端口号)

cancelButton(取消) connectButton(连接)

看到这些名字,大家也能猜出界面是什么样子了吧。

其中两个按钮会连接槽函数:

void Widget::on_cancelButton_clicked()
{this->close();
}
​
​
void Widget::on_connectButton_clicked(){//获取ip地址和端口号QString ip=ui->ipLineEdit->text();QString port=ui->portLineEdit->text();qDebug()<<ip;qDebug()<<port;//连接服务器socket->connectToHost(QHostAddress(ip),port.toShort());//服务器成功,socket发出一个连接上的信号,效果是弹出一个QMessageBoxconnect(socket, &QTcpSocket::connected, [this]() {QMessageBox::information(this, "连接提示", "已成功连接到服务器!");});
​//连接断开,socket会发出一个已断开的信号,效果是弹出一个QMessageBox进行提示connect(socket, &QTcpSocket::disconnected, [this]() {QMessageBox::information(this, "连接提示", "连接异常 网络断开");});
​
}

服务器

首先,我们要创建一个项目,名字取为TCPServer(基类选择 QWidget)

接着也是创建ui界面:

ipLineEdit portLineEdit label label_2 label_3

然后实现下面的代码:

浏览下面的代码,会发现使用了

server->listen(QHostAddress::AnyIPv4,PORT);这是因为服务器上会有多个端口号,我们必须知道客户端会和其上的哪个端口号进行连接,进而监听对应的端口号,所有这里要指定一下。而QHostAddress::AnyIPv4:代表监听所有 IPv4 网卡(比如 127.0.0.1、192.168.x.x 等)。为什么要监听某个网卡?

这是因为一台机器可能有多个网络接口,比如:内网IP(192.168.1.x)本地环回IP(127.0.0.1)外网公网IP,我们可以选择监听某一个 IP,或用 QHostAddress::AnyIPv4 来监听所有 IPv4 网络接口,这样无论客户端从哪个网络连接,都能被接受。

总结一句:服务器要先明确监听哪个端口,客户端才能连接这个端口,双方才能通信!

#include<QTcpServer>
#include<QTcpSocket>
定义端口号:
#define  PORT 8000
添加成员对象:
QTcpServer *server;
​
在构造函数中初始化
server=new QTcpServer;
//服务器会监听哪个网卡和端口号
server->listen(QHostAddress::AnyIPv4,PORT);
//客户端发起连接,server发出一个newConnection信号,效果是调用槽函数newClientHandler
connect(server,$QTcpServer::newConnection,this,&Widget::newClientHandler);
接着我们来实现上面connect的槽函数,其功能除了和客户端建立起连接,还通过返回的socket获取了客户端的ip地址和端口号,进而显示在编辑框上。void Widget::newClientHandler(){//建立tcp连接,返回一个套接字指针QTcpSocket *socket=server->nextPendingConnection();//获取客户端的ip和port(信息都保存在返回的socket里面,我们从中拿即可)socket->peerAddress();//获取客户端地址和socket->peerPort();//获取客户端端口号//toString可以将QHostAddress类型数据转成QStringui->ipLineEdit->setText(socket->peerAddress().toString());//QString::number()可以将无符号短整型转换为QStringui->portLineEdit->setText(QString::number(socket->peerPort());}

运行测试

接着,我们看看运行的效果。在客户端上输入服务器的地址和端口号,点击连接按钮,会弹出一个消息框显示连接成功;服务器的编辑框上也显示了客户端的ip地址和端口号,至此,整个demo到这里就结束了,谢谢大家!

查找帮助文档的一些函数说明:

接着在帮助文档处,我给大家查找了几个主要的函数,下面一一介绍。

1.QHostAddress中有一个构造函数,能将QString类型转换为QHostAddress类型

2.QTcpSocket::connectToHost(const QHostAddress &address, quint16 port)

作用是客户端发起连接,连接到指定的服务器地址和端口。

正如我们上面写的:(注意参数类型,其中第一个参数我们用到了上面1点介绍的QHostAddress函数)

socket->connectToHost(QHostAddress(ip),port.toShort());

3.QTcpServer::listen(const QHostAddress &address, quint16 port)作用是启动 TCP 服务器,监听指定 IP 地址和端口

返回值:true:监听成功

false:失败,可能端口被占用(用 server->errorString() 查看具体错误)

正如我们上面的 server->listen(QHostAddress::AnyIPv4,PORT); 指定了服务器会监听哪个网卡和端口号

4.QTcpServer::nextPendingConnection()

当接收到 newConnection 信号后,调用该函数可以获取客户端的 QTcpSocket 对象,进行通信。

正如我们上面写了:QTcpSocket *socket=server->nextPendingConnection();


文章转载自:

http://y2QxA4X6.fjptn.cn
http://MEIwwxeP.fjptn.cn
http://r0Zj5yMO.fjptn.cn
http://RFnhfbJA.fjptn.cn
http://4Q481C5Y.fjptn.cn
http://SzKUPnaQ.fjptn.cn
http://0OM5sxBO.fjptn.cn
http://8smVuLVQ.fjptn.cn
http://0WkuKHAf.fjptn.cn
http://XK5onr9o.fjptn.cn
http://NDv7JQ00.fjptn.cn
http://sUGrFX8I.fjptn.cn
http://iDv4D7xG.fjptn.cn
http://nDVLcqBz.fjptn.cn
http://HTP6jX8v.fjptn.cn
http://RUl9lyw2.fjptn.cn
http://SKY04s7P.fjptn.cn
http://nX6EAxKS.fjptn.cn
http://SprRCIRi.fjptn.cn
http://hMw8nnre.fjptn.cn
http://LsKnUGkf.fjptn.cn
http://x4GVvZTp.fjptn.cn
http://oWzaJ6qa.fjptn.cn
http://6Gt3NVwv.fjptn.cn
http://mn9hTsD1.fjptn.cn
http://mcAsA1zS.fjptn.cn
http://lhmSEDgN.fjptn.cn
http://wudWn7Uv.fjptn.cn
http://Dw28bazj.fjptn.cn
http://yp1gFPTo.fjptn.cn
http://www.dtcms.com/wzjs/679699.html

相关文章:

  • 怎么来维护已经上传的网站呢局域网网站建设需要什么条件
  • 怎么样做网站视频公司部门简称
  • 人像摄影网站百度权重域名
  • 网站开发的税率是多少钱pc网站开发工具
  • 网站优化无限关键词设置wordpress做的网站
  • 个人网站效果图咋做中国新闻最新消息大事件
  • 南宁建设信息网站如何建立网站快捷方式到桌面
  • 深圳罗湖网站开发wordpress apache 404
  • 网站开发主管岗位职责说明书说说刷赞网站推广
  • 济南网站建设及推广站长工具亚洲
  • 软装设计网站排名教育培训网站
  • 彩票网站建设服务网站如何做快捷支付接口
  • 大庆网站开发制作宁国网站建设
  • 营销外包网站长沙建站模板平台
  • 河南省汝州市文明建设门户网站无棣做网站
  • 辽宁做网站和优化哪家好网站icon图标怎么加
  • 视频网站X站H站搭建建设视频背景做网站背景
  • php手机网站后台源码全方位营销型网站
  • 建站吧惠州网站建设l优选蓝速科技
  • 私人做网站wordpress怎么上传产品
  • 微商城网站建设平台合同多语言商城源码
  • 做哪个外贸网站不用交费泸州市规划建设局网站
  • 网站页尾模板做百度推广首先要做网站吗
  • 整站优化加盟六安的网页制作
  • 温州网站建设有限公司快递业务服务网站建设的需求分析
  • 知乎 php网站开发书籍会ps的如何做网站
  • 赣州网站建设公司哪家好免费发布信息网站有哪些
  • 旅游 便宜 网站建设丽水开发区建设局网站廉租房
  • 交换链接适合哪些网站网站改版设计思路
  • 医院网站建设合同范本做网站用 jsp还是asp