最后更新:2022-05-07 03:49:48 手机定位技术交流文章
概念
在普通话中, Socket 意指“ 插件 ”, 在 Linux 环境中, 它指用于进程间网络通信的具体文件类型。 其本质是内核通过缓冲区生成的假文件 。
因为它是一个文件, 我们可以引用它 使用文件描述符。
将Linux系统加密成文件的目的是统一界面,使印刷和印刷文档的运作类似,区别在于,应使用该文件读写当地可持续数据。
在TCP/IP协议中,IP地址为+ TCP或UDP端口号,只能确定网络通讯中的一个程序。
套接字代表IP地址和端口号。想要连接的两个进程都有一个套接字可以显示 。因此,只有两只索克塞特派的索克塞特派才承认某种关系。Socket 可用于描述一对一网络连接 。
套接字通信原理
在网上通讯中,袜子是不可避免的。 在答复结束时,分配缓冲区的初始末端是接收缓冲区。
Socket 通讯流程图

两种字节序
- 排序大字节 - 低位数 - 低位数高位数, 高位数低位数
- 小字节顺序包括低地址低字节和高地址高字节。
示例:
发送主机通常在内存地址的低到高顺序中从缓冲区发送数据。在接收缓冲地带,东道主按顺序储存从网络收到的字节。同样,它也保存在低至高的记忆地址顺序中。因此,网络流的 URL 应指定要提供的初始数据位于低位 。释放后数据的地址是一个高地址。
根据TCP/IP议定书,网络数据流应采用一个单一的字字节顺序,即地址低的字节
示例:
例如,1001号港口(0x03e9)用两个字节保存。采用大端字节序,低地址为 0x03, 高地址为 0xe9, 最初相当于 0x03, 之后是 0xe9, 在东道方被转移到的缓冲区内, 也应该是 0x03 和 0xe9 。
但是,如果发送主机只是一个简短的字节序列,16人被解码为0xe903,不是1001。因此,在传送主机填写1001以发送缓冲区之前,必须转换字节。同样的,如果宿主是一个字节,对于字节序列转换,也使用16位源端口号。
如果主机是一个很长的字节序列, 发送和收件都不必转换。 同样, 32 位 IP 地址既考虑网络字节,也考虑主机字节 。
以下图书馆功能可要求网络字节和主机字节转换,使网络软件可移植,并使相同的C代码能够正常运行,不论是否建在大端和小端系统上。
如果主机是一个小字节序列,这些函数将参数转换为适当的大小端和返回;如果主机是一个大字节序列,这些程序不会以不同的方式转换和返回参数。
在IPv4协议之前,存在若干网络编程功能。为了与它兼容,他们当时使用袜子结构。索卡迪尔现在接任了空虚的工作*。发送一个地址的函数,不清楚此函数是否是 sockaddr_in 或其他东西 。由地址族确定,函数类型随后被迫转换为所需的地址类型。
使用 shockaddr_ in 的细细调 Sruct 袜子ddr

IPv4 地址格式在Netinet/in.H 中描述。Sockaddr_ in 结构包含 IPv4 地址 。它有16位端口和32位IP地址。然而,袜子API早于ANSI C标准。不存在这种虚无的*类型。因此,某些论点,例如约束和接受功能,以构筑袜子* 类型表示。在提供参数之前,必须先改变类型。例如:
示例:


AF_INET和AF_INET6以af 值提供,相当于 ipv4 和 ipv6。
IPv4 和 IPv6 支持
例如, Iint_pton 和 int_ntop 不仅可以翻译为 IPv4 的 in_addr, 还可以翻译为 IPv6 的 in6_addr。
因此,功能接口是无效的 *addrptr 。
示例:

域是第一个参数 。
- 大部分用于生产插座、AF_INET、使用TCP或UDP进行传输和IPv4地址的协议。
- AF_INET6 与最后一个相同, 但它是一个 IPv6 地址 。
- AF_UNIX是Unix和Linux系统使用的本地协议,经常当客户和服务器在同一台和同一计算机上时使用。
参数2:type
- SOCK_STREAM 协议是一个基于字节的链接, 其顺序、 可靠且数据完整。 它是最常用的套接字类型, 并使用 TCP 传输 。
- SOCK_DGRAM 是一个未连接的固定长度传输电话。 协议不可信, 因此 UDP 用来连接它 。
- SOCK_SEQPACKET 协议是一个双线、可靠的连接, 提供固定长度数据包供传输。 要阅读, 软件包必须完全被接受 。
- SOCK_RAW 套接字类型提供单一的网络连接,并使用IPCMP公共协议。 (平面、贸易路线利用合同)
- SOCK_RDM是大多数操作系统中很少使用和未实现的类型,可进入数据链层使用,但不能确保数据包的顺序。
协议是第三个参数。
- 传真0表示正在使用标准协议。
返回值:
如果成功, 则返回新生成套接字的文件描述 。
失败: 返回 - 1, 错误编号存储在错误号中 。
补充:
Socket () 初始化网络连接端口 。如果成功的话,与 Open () 如何返回文件描述符相似, Close () 也相似 。该程序可以像读写文件一样,在网上读写数据。如果套接字 () 调用失败, 此函数返回 1 。对于IPv4,域参数称为AF_INET。对于TCP协议,SOCK_STREAM 是类型参数的名称 。是一个以流动导向方式传输数据的规程。如果是UDP协议,类型参数是 Sock_DGRAM 。是数据报告的传输方法。协议参数以压缩的形式给出。指定为0即可。
Sockfd 是第一个参数 。
- Socket 文件描述符
参数2:addr
- 创建 IP 地址和端口号 。
第 3 个参数: adplen
- 长度( Addr) 大小
返回值:
- 成功返回0
- 返回失败 -1; 错误编号存储在错误名中 。
服务器应用程序的网络地址和端口号通常是固定的, 当服务器知道服务器程序地址和端口号时, 客户端可以建立与服务器的连接, 因此服务器必须执行绑定以绑定固定的网络地址和端口号 。
Bind () 的函数是连接参数 sockfd 和 adder, 使 sockfd、 用于网络连接的文档字符、 监听 adder 指定的地址和端口号 。
因此, strutct cockaddr* 是一种通用指针类型, 并且 ddr 参数实际上可以被不同长度的许多协议的袜子结构所接受, 因此, 第三个参数 addrlen 是确定结构长度所必需的 。
解释:
第一步是净化整个结构在此之后, 请将地址类型更改为 AF_ INET 。INADD_ANY是互联网地址。此宏用于代表任何本地IP地址 。因为服务器可能有几个网页卡每张卡片上可指定许多IP地址。此配置在所有 IP 地址上都可窃听 。只有在与客户建立联系之后,方才确定IP地址。端口号为6666。
1 sockfd 是一个参数 。
- Socket 文件描述符
参数 2 的倒数 :
- In Linux,这需要排成排队排成三队,排成一队。
返回值
- 成功返回0
- 失败返回-1
补充:

检查当前系统默认的补缺日志 。 @ info: whatsthis

增加或减少系统限制的积压记录的规模。
一个典型的服务器应用程序可以同时为众多客户服务。当客户建立连接时,要返回并接受此连接, 服务器运行会接受 () 。如果启动连接的客户很多,服务器无法处理,则无法连接。尚未接受的客户处于等待联系状态。对不起,但我不知道我在说什么, 但我不知道我在说什么, 但我不知道我在说什么, 但我不知道我在说什么, 但我不知道我在说什么,而且你只能有一个积压客户端 在一个连接警示器上 一次。进一步联系请求如抵达则不予理会。Listen () 给出一个成功的 0 值 。失败返回-1。
1sockdf 是一个参数 。
- Socket 文件描述符
参数2addr:
- 发送参数,并返回连接的客户地址信息,包括IP地址和端口号。
3addrlen 是一个参数 。
- 输入参数( 数值输出结果), 输入大小( addr), 当函数返回时, 将实际收件人的大小返回地址结构 。
返回值:
- 成功返回一个新的Socket 文件描述符,用于和客户端通信。
- Ernor是由于未能返回 -1而设的。
补充:
三次握手完成后,服务器电话接受()接受连接,如果服务器电话在没有客户端的连接请求的情况下接受(),服务器延迟到客户端连接。
接受 () 返回启动请求链接作为输出参数的客户端的地址和端口号 。
adpllen 参数是一个数值结果参数( 输入退出参数) 。呼叫者利用来防止进入缓冲区,即缓冲地带的长度,溢出缓冲区。这是客户端地址结构的长度(其中可能包括也可能不包括一个完全呼叫者的缓冲区)。
如果 ddr 选项被设定为 NULL, 它与客户端的地址无关 。
示例:
整个过程就是死亡循环每个循环负责客户连接。因为claiddr_len既是一个条目又是一个输出参数,每次呼叫前,应恢复启动值。Listenfd 接受() 参数是一个先前损坏的文档描述符 。被接受的函数返回值是另一个文件描述符 Connfd 。此后,该控制室被用来与客户进行沟通。归根结底 Connfd的断开关被关闭了我不想关掉听众的收听器返回到循环的起点时, 收听器仍被用作接受的参数 。接受 () 返回成功的文件配置程序 。出错返回-1。
1sockdf 是一个参数 。
- Socket 文件描述符
参数2addr:
- 输入参数,包括服务器的 IP 地址和端口号 。
瓦兰德伦:
- 插入参数, 如大小( addr) 大小 。
返回值:
- 成功返回0。
- Ernor是由于未能返回 -1而设的。
补充:
客户端必须使用连接 () 连接服务器, 以相同格式传递连接和绑定参数, 绑定参数是他们自己的地址, 连接参数是另一个地址 。
系统功能呼叫并不总是成功,因此我们必须引入错误,以便一方面程序逻辑是正常的,另一方面信息迅速获得。
参数errnum:
- 输入参数, 不正确的数字值, 在大多数情况下, 错误值 。
返回值:
- 错误原因
示例:
参数s:
- 输入参数和定制描述。
返回值:
- 无
麻烦登录到标准标准标准标准标准
示例:
本文由 在线网速测试 整理编辑,转载请注明出处。