Qt中的网络编程

      最后更新:2022-02-02 22:24:14 手机定位技术交流文章

      目录

      一、tcp/IP协议簇与udp

      1、TCP/IP协议族

      2、udp

      3、常用的通讯协议小结

      1.3.1、tcp/ip

      1.3.2、Socket

      1.3.3、tcp通信模型

      二、Qt中的tcp(这里只展示代码)

      1、tcpsever

      2、tcpclient

      ​三、QT中的Udp

      由于我没有系统的分享一些简单的计算机网络有关的,下面只是简单讲讲tcp/ip协议簇和udp

      一、tcp/IP协议簇与udp

      1、TCP/IP协议族

      TCP/IP实际上是一个协同工作的通信家族,为网络通信提供通路。为方便讨论TCP/IP协议族,大体上分为三部分:

      ①、Internet协议(IP)。

      ②、传输控制协议(TCP)和用户数据报协议(UDP)。

      ③、处于TCP和UDP之上的一组应用协议。它们包括:Telnet,文件传送协议(FTP),域名服务协议(DNS)和简单的邮件传送程序(SMTP)等。

      2、udp

      udp协议(用户数据报协议),它与TCP协议完全相反。提供不可靠、无连接和基于数据报的服务。不可靠意味着UDP协议无法保证数据从发送端正确的发送到接收端。如果数据在中途丢失,或者目的端通过数据校验发现数据错误而将其丢弃,则UDP协议的应用程序通常要自己处理数据确认、超时重传等逻辑性。

      3、常用的通讯协议小结

      1.3.1、tcp/ip

      tcp只需要知道它是一种通讯方式就可以了,还有一个udp,那这两者之间的关系是什么。TCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了,tcp是打电话,udp是发短信。

      Ip(网络之间互连的协议,外文是Internet Protocol的外语缩写,中文缩写为“网协”。缩写为IP),通过设置ip地址就可以去访问网络,用的最多的ip协议是ipv4(ip协议v版本4),还有一个版本为ipv6,ipv4不够用了,Ipv4版本是32位的,一般分成4段,内存中就是一个无符号32位的整数,ipv6的话就是一个64位的整数,通过位数就知道ipv4和ipv6的区别,能保存多少个的地址。只不过用户并不需要去搞清楚。

      现在常用的ip是127.0.0.1( 127.0.0.1_百度百科 (baidu.com) )这个样子,点分格式(一个字符串)。点所隔开的区间就是一个字符。Ip地址有ABC三类地址。前三段是用来确定路由器,确定主机连上外围网上的哪一个路由,最后一段用来确定主机,确定主机是这个路由器上的第多少台,最多255台,0一般是用来做网关的。

      ip对应的还有一个子网掩码

      子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。子网掩码--屏蔽一个IP地址的网络部分的"全1"比特模式。

      对于A类地址来说,默认的子网掩码是255.0.0.0;

      对于B类地址来说默认的子网掩码是255.255.0.0;

      对于C类地址来说默认的子网掩码是255.255.255.0。

      子网掩码,一般是255.255.255.0。

      ip地址的前三段来确定路由器,最后一段是主机位置。所以子网掩码理解为子网遮罩编码。

      1.3.2、Socket

      pc机对应在网络上就是一台主机,在这台Pc机上面会有多个进程需要访问网络,所以需要在Pc机的操作系统上面去有处理网络的东西,前人就定了一个“套接字”来专门处理网络(源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字)。把一个主机拆分为N个网络端口(Port)一共会有65536个,short的最大范围,在这些端口当中,要注意0-5000的端口一般不用,用来给操作系统的进程来使用的。一般会用靠后一点的端口,这样比较安全,当然还有一些端口,比如8080端口也会用的比较多,一个进程只能占用一个端口,不能多进程占用同一个端口的情况,一个进程可以占用多个端口的,或者严谨一点,同一时刻一个端口只能由一个进程使用。网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

      建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。

      1.3.3、tcp通信模型

      c/s模型,客户端(c)/服务器(s)模型,一个服务器来对应多个客户端的处理,一对多的关系。以下步骤没有特殊指明,服务器和客户端是都需要有的步骤:

      1.准备工作,根据自己使用语言所有库函数导入;

      2. 确定版本信息,要确定socket版本,ip是有v4和v6两个版本的;

      3. 创建socket,使用socket函数

      4. 初始化协议地址簇 ;

      5. 绑定,使用bind函数,把协议地址簇和socket绑定在一起,客户端不要绑定;

      6. 服务器端有,需要监听 listen函数,客户端不需要这一步;

      7. 服务器端需要接受连接,客户端需要连接服务器;

      8. 连接完成之后,开始通讯,收发数据;

      9. 通讯完成后关闭socket;

      二、Qt中的tcp(这里只展示代码)

      开始前在项目的.pro文件中加入这个network

      1、tcpsever

      tcpsever.h

      tcpsever.cpp

      2、tcpclient

      tcpclient,h

      tcpclient.cpp

      三、QT中的Udp

      初始操作同TCP操作

      udp_test.h

      udp_test.cpp

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/17816.html

          热门文章

          文章分类