【校招 --阶段二 网络编程】UDP套接字编程

      最后更新:2022-03-10 09:33:23 手机定位技术交流文章

      一 、预备知识

      1. 了解来源地和目的地IPIP地址之间的差异

      IP数据包有两个IP地址,一个来自源IP地址,另一个来自目的地IP地址。IP地址将数据从一个主机硬件传送到另一个主机硬件。IP地址显示主机网络和硬件的独特性。

      港口指定(港口)

      由于IP地址是整个网络的唯一主机,而且主机有许多程序,因此,端口号用于在主要语句中确定一个特定程序。因此,IP地址+端口号=互联网上唯一的程序(IP+端口号称为Socket)。

      3 港口和进程ID号之间的联系

      在系统编程中,我们了解到,每个过程都有一个称为Pid的单项代号,而这里的港口号是唯一能说明其特点的代号。
      程序需要PID, 只有网络程序才有端口号。
      一个端口号只能用一个过程。 端口号用来确定一个过程, 并指示操作系统处理当前数据; 一个过程可以绑住几个端口号, 但只有一个港口号只能用多个进程编号捆绑, 只能用一个过程。 端口号用来确定一个过程, 并指示操作系统处理当前数据; 一个过程可以绑住几个端口号, 但只有一个港口号可以被多个进程捆绑。

      4 港口号(来源和目的地)

      在传输层协议的数据部分(TCP和UDP)有两个港口号,称为源号和目的地港口号。事实上,这是对谁提交数据的描述。
      发给谁”;

      5 《关于TCP和UDP的协定》

      tcp
      特点:

      传输层协议
      有连接
      可靠传输
      面向字节流

      udp
      特点:

      传输层协议
      无连接
      不可靠传输
      面向数据报

      Tcp和Udp都比Udp效率高。

      6 网络字节序

      我们已经知道数据是按大小和终点排列的。不同的主机也有可能按大小和终点分隔。因此,在网络传输期间,如果源主机是一个巨大的数据再传输,目标主机是小型机器, 并不知道数据被送去解释问题。那么怎么解决呢?根据网络,每个重新联网的数据必须是大规模的数据。不论主机大小,数据将在TCP/IP规定的网络字节序列中发送/接收;如果目前的发送者小,数据必须首先转换为大端;否则,数据将完全被忽略;发送者通常以低至高的内存顺序从缓冲区发送数据;接收者将接收的网络收到的字节按顺序排列在接收的缓冲区,并按存储地址的低至高顺序排列;因此,网络流的地址应说明数据首先以低地址发送,然后以高地址发送。 TCP/IP协议规定,网络数据流应跟随大字节序列,即地址低的字节。

      在这里插入图片描述
      以下图书馆功能可要求网络字节和主机字节转换,使网络软件可移植,并使相同的C代码能够正常运行,不论是否建在大端和小端系统上。
      在这里插入图片描述

      这些函数名称是明确的: h 表示主机, n 表示网络, I 表示32 位长整数, s 表示16 位短整数。
      例如,Htonl表示将32位长整数值从主机字节转换为网络字节顺序,例如将IP地址转换为传输。
      如果主机是一个小字节序列, 这些方法将把参数转换为适当的结尾和返回大小 。
      如果主机是一个大端字节序列,这些方法不会转换,而是按原样返回参数。

      二. 套接合标准

      索卡迪尔结构

      Socket API 是一个抽象的网络编程界面,适用于广泛的基本网络协议,包括IPv4、IPv6和UNIX域,仅举几个例子。
      索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 索科特、 各种网络协议的地址格式各不相同。 为了满足这一要求, 操作系统建立了一套索科卡迪特界面, 利用一系列接口, 完成各种应用或不同网络协议之间的通信困难 。

      在这里插入图片描述
      这三种类似结构中,每种结构都有16位数的地址类型,第二种擦拭方式通常格式化为16位数的端口和32位数的IP地址,后者通常是Socket界面中的参数。struct sockaddr* address然而,我们经常使用精细的柔软袜子。这一结构只需在交叉参照程序期间才能牢固地建立,才能扎实袜子。这是利用一套界面转换几个程序,其中IPV4在传输到结构 sockaddr_in 时用作通信方法,而IPV6在传输到第三个结构时用作通信手段,即使用一套界面转换若干程序,在传输到结构 sockaddr_in 时用作通信方法,而IPV6在传输到第三个结构时用作通信手段。

      通用套接合API

      头文件:
      #include<sys/types.h>
      #include<sys/socket.h>

      / 生成锁板文件描述符(TCP/UDP,客户/服务器)。
      int socket(int domain, int type, int protocol);
      参数:
      多米安:AF_INET(IPV4)和AF_INET6(IPV6)使用了哪些协议?
      使用地面定位类型、袜子流和袜子流。
      协议的默认值为零 。

      由于 Linux 中的所有文件都已连接, 返回值是一个文档描述符, 并且它看起来数据结构也是 Linux 中的文件, 要让网络通信先打开网络卡设备, 才能建立合适的数据结构 。
      创建软件包的过程是一个在打开文件后打开网络文件的过程,而文件成为网络过程,网络过程在互动时必须附带一个端口号,以及系统信息和IP地址。

      TCP/UDP 装订港口号(服务器)
      int bind(int socket, const struct sockaddr *address,socklen_t address_len);
      参数:
      要打开网络文件,请使用文件描述符 。
      Struct socketaddr: stuct socketaddr_in 类型的参数通常包含 IP 地址和端口号 。
      地址(_Len:输入地址的长度。

      如果函数成功,返回 0;否则返回 1,并设定错误代码。
      Sockadr_ in 结构结构
      在这里插入图片描述

      IPV4 协议组被用作 AF_INET 的一般值,In_port是端口号16, in_addr 是一个结构。
      In_ addr 结构的 Inder 结构
      在这里插入图片描述
      saddr 是32个字符的 IP 地址。

      可以直接接收和转移文件,因为没有必要与乌普包装的通信连接。

      用于接受
      ssize_t recvform(int sockfd,voidbuff,size_t len,int flags,struct sockaddrsrc_addr,socklen_t *addrlen);
      参数;
      袜子是一种文件描述符缓冲地带,缓冲带读取数据。缓冲区的面积与Len预计读取的数据数量相对应。国旗读取Io读取的数据不一定必须读取(当阅读标准没有达到时),它们读取的数据我不想读取。进程就要等待阻塞,(锁定是默认值。)后向 src_addr 和 addren 是输出类型的参数, 包括源主机的 IP 地址和端口号 。

      用于发送
      ssize_t sendto(int sockfd,const voidbuff,size_t len,int flags,struct sockaddrsrc_addr,socklen_t *addrlen);
      参数:
      袜子是一种文件描述符{fn黑体fs22bord1shad03aHBE4aH00fscx67fscy662cHFF3cH808080}Buff发生的事就发生了 {fn黑体fs22bord1shad03aHBE4aH00fscx67fscy662cHFF3cH808080}Buff发生的事就发生了 {fn黑体fs22bord1shad03aHBE4aH00fscx67fscy662cHFF3cH808080}以 len 计算的数据长度,旗子写出数据属于木卫一,而且(在不符合先决条件的情况下)写作并不总是可行的,而且写作也是不可能的。进程就要等待阻塞,Src_addr 和 addrlen 是输入参数, 包括源主机的 IP 地址和源端端口 。

      地址转换函数

      在基于 IPv4 的 Socket 网络程序中,成员 sockaddr_ intract in_addr sin_addr 指定了32位IP地址,然而我们通常使用小数字符串代表 IP 地址,以下函数可以在字符串和 in_addr 表达式之间转换;
      字符串的 addr 函数 :
      在这里插入图片描述
      Inaddr 变成字符串函数 :
      在这里插入图片描述
      例如, Iint_ pton 和 int_ ntop 不仅可以转换 IPv4 的 addr, 还可以转换 IPv6 的 6_ addr, 所以函数界面是无效的 *addrptr 。

      UDP通用套接字

      在这里插入图片描述
      说明:

      不能简单地改变标准服务器的IP地址和邮政,众所周知,客户一旦改变,客户将不再连接。
      客户并不需要强有力的约束, 但是他们确实需要IP 和发布,
      第一,当客户陷入困境时 强迫客户失败很容易
      2 客户需要独有的端口号,但不必说明是哪个端口号。
      当 IP 和 端口: clit 的 udp、 repv 和 send 是必要的时, 系统会自动绑定 ip 和 port 号 。
      网络IP地址为INADDR_ANY由于服务器可能有许多互联网卡片,其中每个卡片可分配到一个以上的IP地址,因此设置可以在所有 IP 地址上显示,直到与客户端建立连接,确定使用哪个IP 地址。

      乌德普软件包用于为在线翻译软件提供动力。

      sever

      client

      在这里插入图片描述

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

          热门文章

          文章分类