最后更新:2022-03-10 09:33:23 手机定位技术交流文章
IP数据包有两个IP地址,一个来自源IP地址,另一个来自目的地IP地址。IP地址将数据从一个主机硬件传送到另一个主机硬件。IP地址显示主机网络和硬件的独特性。
由于IP地址是整个网络的唯一主机,而且主机有许多程序,因此,端口号用于在主要语句中确定一个特定程序。因此,IP地址+端口号=互联网上唯一的程序(IP+端口号称为Socket)。
在系统编程中,我们了解到,每个过程都有一个称为Pid的单项代号,而这里的港口号是唯一能说明其特点的代号。
程序需要PID, 只有网络程序才有端口号。
一个端口号只能用一个过程。 端口号用来确定一个过程, 并指示操作系统处理当前数据; 一个过程可以绑住几个端口号, 但只有一个港口号只能用多个进程编号捆绑, 只能用一个过程。 端口号用来确定一个过程, 并指示操作系统处理当前数据; 一个过程可以绑住几个端口号, 但只有一个港口号可以被多个进程捆绑。
在传输层协议的数据部分(TCP和UDP)有两个港口号,称为源号和目的地港口号。事实上,这是对谁提交数据的描述。
发给谁”;
tcp
特点:
传输层协议
有连接
可靠传输
面向字节流
udp
特点:
传输层协议
无连接
不可靠传输
面向数据报
Tcp和Udp都比Udp效率高。
我们已经知道数据是按大小和终点排列的。不同的主机也有可能按大小和终点分隔。因此,在网络传输期间,如果源主机是一个巨大的数据再传输,目标主机是小型机器, 并不知道数据被送去解释问题。那么怎么解决呢?根据网络,每个重新联网的数据必须是大规模的数据。不论主机大小,数据将在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在传输到第三个结构时用作通信手段。
头文件:
#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 。
说明:
不能简单地改变标准服务器的IP地址和邮政,众所周知,客户一旦改变,客户将不再连接。
客户并不需要强有力的约束, 但是他们确实需要IP 和发布,
第一,当客户陷入困境时 强迫客户失败很容易
2 客户需要独有的端口号,但不必说明是哪个端口号。
当 IP 和 端口: clit 的 udp、 repv 和 send 是必要的时, 系统会自动绑定 ip 和 port 号 。
网络IP地址为INADDR_ANY由于服务器可能有许多互联网卡片,其中每个卡片可分配到一个以上的IP地址,因此设置可以在所有 IP 地址上显示,直到与客户端建立连接,确定使用哪个IP 地址。
sever
client

本文由 在线网速测试 整理编辑,转载请注明出处。