网站建设与维护 目录网站到期查询备案

pingmian/2025/10/12 2:11:27/文章来源:
网站建设与维护 目录,网站到期查询备案,广告传媒公司网站怎么做,石家庄教育学会网站建设Socket 是网络协议栈暴露给编程人员的 API#xff0c;相比复杂的计算机网络协议#xff0c;API 对关键操作和配置数据进行了抽象#xff0c;简化了程序编程。 本文讲述的 socket 内容源自 Linux man。本文主要对各 API 进行详细介绍#xff0c;从而更好的理解 socket 编程。…         Socket 是网络协议栈暴露给编程人员的 API相比复杂的计算机网络协议API 对关键操作和配置数据进行了抽象简化了程序编程。 本文讲述的 socket 内容源自 Linux man。本文主要对各 API 进行详细介绍从而更好的理解 socket 编程。 socket(7) send()           遵循 POSIX.1 - 2008 MSG_CONFIRM 是 Linux 扩展 1.库 标准 c 库libc, -lc 2.头文件 sys/socket.h 3.接口定义 sockfd socket(int socket_family, int socket_type, int protocol); 4.接口描述 本文主要描述 Linux 网络套接字层的用户编程接口。 BSD 兼容的套接字是用户进程和内核网络协议栈的统一接口。各协议模块被分配不同的协议家族AF_INET、AF_IPX、AF_PACKET 等以及不同的套接字类型如 SOCK_STREAM、SOCK_DGRAM参考 socket(2) 获取更多关于协议家族和类型的信息。 套接字层函数 这些套接字层函数是用户进程用来发送和接收数据包以及其他套接字操作。 socket(2) 创建一个套接字connect(2) 连接一个套接字到一个远程套接字地址bind(2) 将一个套接字绑定到一个本地套接字地址上listen(2) 告知套接字有新连接需要被接受accept(2) 用来获取新来连接的新的套接字socketpair(2) 返回两个连接的匿名套接字只有类似 AF_UNIX 的本地套接字才有这个实现。 send(2)、sendto() 和 sendmsg(2) 在套接字上发送数据recv(2)、recvfrom、recvmsg(2) 从套接字上接收数据。poll(2) 和 select(2) 等待数据来临或者是否发送数据就绪。此外标准的 I/O 操作类似 write(2)/writev(2)/sendfile(2)/read(2)/readv(2) 可以用来读写套接字上的数据。 getsockname(2) 返回本地套接字地址getpeername(2) 返回远程套接字地址。getsockopt(2) 和 setsockopt(2) 用来设置/获取套接字层或者协议层选项。ioctl(2) 可以用来设置或者读取一些其他选项。 close(2) 用来关闭一个套接字。shutdown(2) 关闭全双工套接字双方。 Seeking 或者 pread(2)、pwrite(2) 这种从非 0 位置读写操作套接字是不支持的。 可以通过 fcntl(2) 来设置一个套接字文件描述符的非阻塞标记实现套接字的非阻塞 I/O 操作。一旦设置套接字上所有可能导致阻塞状态通常都会返回 EAGAIN表示操作稍后需要重试connect(2) 会返回 EINPROGRESS 错误。用户可以通过 poll(2) 或者 select(2) 来等待各种事件。 I/O 事件事件轮询标记发生时机读POLLIN新数据到达读POLLIN一个连接配置已完成对于面向连接的套接字读POLLHUP对端发起了断开连接请求读POLLHUP连接断开了对于面向连接的套接字当写套接字时会发送 SIGPIPE 信号写POLLOUT套接字具有足够的空间来写入新数据读写POLLIN/POLLOUT向外连接的 connect(2) 完成读写POLLERR发生了异步错误读写POLLHUP对端关闭了一个方向的连接异常POLLPRI紧急数据到达随后会发送 SIGURG。 另一个代替 poll(2)/select(2) 的方式是内核通过 SIGIO 信号通知应用程序对于这种方式必须通过 fcntl(2) 来设置套接字文件描述符的 O_ASYNC 标记然后通过 sigaction(2) 安装 SIGIO 的信号处理函数可以参考后面关于信号的讨论。 套接字地址结构 每个套接字域domain都有自己的套接字地址格式。每个结构以一个整型的“家族”字段(sa_family_t) 来指示地址结构的类型各种系统调用比如 connect(2)、bind(2)、accept(2)、getsockname(2)、getpeername(2) 是各个套接字域通用的可以通过家族和类型来区分不同域的特定套接字地址。 为了允许任何类型的套接字地址都可以传递到各个套接字 API我们定义了 struct sockaddr目的是将各域特定的地址类型转换为通用的类型避免调用套接字 API 时编译器报告类型不匹配警告。 此外套接字 API 也提供了 struct sockaddr_storage 数据类型。这个类型足以装下所有域特定的套接字地址结构并且处理了对齐问题。尤其是它已经能够装下 IPv6 套接字地址。数据结构包含下面的字段这个字段可以用来识别结构中实际存储的套接字地址类型 sa_family_t ss_family; sockaddr_storage 结构在以通用方式处理套接字地址时非常有用也就是程序同时处理 IPv4 和 IPv6 套接字地址。 套接字选项 下面列出的套接字选项可以通过 setsockopt(2) 来设置也可以通过 getsockopt(2) 设置套接字级别参数为 SOL_SOCKET 来读取这些选项。除非特别说明否则 optval 是一个指向整型数据的指针。 SO_ACCEPTCONN 返回值指示套接字是否被标记为可以通过 listen(2) 接收连接。返回 0 表示非可监听套接字返回 1 表示是一个监听套接字。这个选项是只读的。 SO_ATTACH_FILTERLinux 2.2 后SO_ATTACH_BPFLinux 3.19 后 挂载一个经典的 BPFSO_ATTACH_FILTER或者扩展 BPF 程序到套接字上来过滤进来的数据包。如果程序返回 0那么数据包会被丢弃如果返回值比数据包长度小那么数据包会被截断。如果返回值大于等于数据包长度那么数据包可以被原封不动的处理。 SO_ATTACH_FILTER 定义在 linux/filter.h 中是一个 sock_fprog 类型的结构体 struct sock_fprog {unsigned short len;struct sock_filter *filter;}; SO_ATTACH_BPF 的参数是一个通过 bpf(2) 系统调用返回的文件描述符必须指向一个 BPF_PROG_TYPE_SOCKET_FILTER 类型的程序。 对于指定套接字这些选项可以设置多次新的设置会覆盖之前的设置。经典和扩展版本可以在同一个套接字上使用但是之前的过滤器总是会被新的过滤器代替也就是说一个套接字上同一时刻只能定义一个过滤器。 经典和扩展 BPF 在 Linux 内核源码文件 /Documentation/networking/filter.txt 中有解释。 SO_ATTACH_REUSEPORT_CBPFSO_ATTACH_REUSESETPORT_EBPF 在使用 SO_REUSEPORT 选项时用户可以用这些选项来设置经典 BPFSO_ATTACH_REUSEPORT_CBPF) 或者扩展 BPFSO_ATTACH_REUSEPORT_EBPF程序这些程序定义了reuseport 端口组中的套接字的数据包如何过滤也就是所有设置了 SO_REUSEPORT 并使用相同本地地址接收数据包的套接字。 BPF 程序必须返回一个 0 到 N-1 的索引值表示哪个套接字应该接收数据包N 是套接字组中套接字的数量。如果 BPF 程序返回非法索引值套接字选择会回退到没设置这些选项时的 SO_REUSEPORT 机制。 为了将套接字加入到组中每个套接字都按照加入的顺序编号即UDP 套接字按照 bind(2) 调用的顺序 TCP 套接字按照 listen(2) 调用的顺序。新加入 reuse 组的套接字会继承 BPF 程序移除时最后一个套接字会移动到该套接字位置。 这些选项可以在组内任何套接字上设置多次来更新组内所有套接字使用的 BPF 程序。 SO_ATTACH_REUSEPORT_CBPF 和 SO_ATTACH_FILTER 携带相同的参数类型SO_ATTACH_REUSEPORT_EBPF 和 SO_ATTACH_BPF 携带相同的参数类型。 UDP 从 Linux 4.5 后支持这个特性TCP 是从 Linux 4.6 后支持的。 SO_BINDTODEVICE 将一个套接字绑定到特定的诸如 eth0 这样的设备上在传递的接口名称中指定。如果名字是一个空字符串或者选项长度是 0那么套接字绑定会被移除。传进来的选项是一个变长、‘\0’ 结尾的接口名称字符串最大长度为 IFNAMESIZ。如果套接字被绑定到特定接口那么套接字只会处理该接口进来的数据包。值得注意的是这个只对特定套接字类型有用尤其是 AF_INET 套接字。分组packet套接字不支持这个特性使用普通的 bind(2)。 在 Linux 3.8 之前这个套接字选项可以设置但是不能通过 getsockopt(2) 获取Linux 3.8 后就可以读了。optlen 参数包含用于接收设备名字的缓冲区大小建议设置为 IFNAMSIZ 字节真实的设备名字长度会在 optlen 参数报告出来。 SO_BROADCAST 设置/获取广播标记。开启后数据报套接字可以向广播地址发送数据包这个选项对于流套接字无效。 SO_BSDCOMPAT 开启 BSP 错误兼容。这个只在 Linux 2.0 和 2.2 的 UDP 协议模块中使用。如果使能UDP 套接字的 ICMP 错误不会被传递给用户程序后面的内核版本中逐步淘汰这个选项。Linux 2.4 悄悄的忽略这个设置Linux 2.6 会在用户设置这个选项时生成内核警告printk()。Linux 2.0 对于原始套接字默认开启了这个选项但是很快就在 Linux 2.2 中就移除了这个设置。 SO_DEBUG 开启套接字调试。只允许具有 CAP_NET_ADMIN 能力、或者有效用户 ID 为 0 的进程设置开启该选项。 SO_DETACH_FILTERLinux 2.2 后SO_DETACH_BPFLinux 3.19 后 这两个选项意思相同可以用来移除套接字上使用 SO_ATTACH_FILTER 或者 SO_ATTACH_BPF 绑定的经典/扩展 BDF 程序选项值会被忽略。 SO_DOMAINLinux 2.6.32 后 获取套接字的域整数值返回类似 AF_INET6 这样的值参考 socket(2) 更多详细信息这个套接字选项是只读的。 SO_ERROR 获取/清除套接字上的错误。这个套接字选项也是只读的返回一个整型数值。 SO_DONTROUTE 不要通过网关发送直接发送到连接的主机。这个和 send(2) 时设置 MSG_DONTROUTE 标记效果相同。期待返回整型布尔标记。 SO_INCOMING_CPULinux 3.19 后可读取Linux 4.4 后可设置 获取或者设置套接字的 CPU 亲和性是一个整型标记 int cpu 1;setsockopt(fd, SOL_SOCKET, SO_INCOMING_CPU, cpu,sizeof(cpu)); 因为一个单独流上的所有数据包都是在一个特定 CPU 上的 RX 队列中到达这个选项的典型应用是每个 RX 队列使用一个监听进程然后将监听进程和 RX 队列处理进程处于同一个 CPU 上。这个是 NUMA 上的最佳用法能够保持 CPU 缓存热度。 SO_INCOMING_NAPI_IDLinux 4.12 后可读取 返回一个系统级的唯一 ID即 NAPI ID这个 ID 是套接字上最后收到数据包所在 RX 队列的标识。 应用程序可以用这个来对不同 RX 队列上的数据流使用不同的工作线程来进行分流这就允许每个工作线程和一个 NIC 硬件接收队列关联为这个上面 RX 队列上接收到的所有连接服务。硬件 NIC 队列到应用线程上的映射使得 NIC 到应用的数据流处理更加高效。 SO_KEEPALIVE 在面向连接的套接字上开启保活消息发送需要的是一个整型布尔型标记。 SO_LINGER 设置/获取 SO_LINGER 选项参数是一个 struct linger 结构体 struct linger {int l_onoff; /* linger active */int l_linger; /* how many seconds to linger for */}; 开启后close(2) 和 shutdown(2) 操作会在所有消息都被发送后才返回或者达到了存留超时值。否则调用会立即返回而关闭操作会在后台进行。exit(2) 中关闭套接字时它总是在后台留存linger。 SO_LOCK_FILTER 设置这个选项会阻止修改套接字的过滤器这些过滤器包括通过 SO_ATTACH_FILTER、SO_ATTACH_BPF、SO_ATTACH_REUSEPORT_CBPF、SO_ATTACH_REUSEPORT_EBPF 设置的。 典型的应用场景是特权进程设置一个原始套接字一个需要 CAP_NET_RAW 权限的操作、应用一个限制过滤器、设置 SO_LOCK_FILTER 选项、然后或者放弃特权或者通过 UNIX 域套接字将套接字文件描述符传递给非特权进程。 一旦 SO_LOCK_FILTER 选项开启了尝试修改或者移除套接字上的过滤器或者禁止 SO_LOCK_FILTER 选项会报错 EPERM。 SO_MARKLinux 2.6.25 后 设置由该套接字发送的数据包的标记mark和 netfilter MARK 类似只是基于套接字的。修改标记可以用于没有 netfilter 或者分组过滤器的基于标记的路由。设置这个选项要求 CAP_NET_ADMIN 能力。 SO_OOBINLINE 如果这个选项开启带外数据会直接放入接收数据流中。否则带外数据只有在 MSG_OOB 标记设置时才会接收时才会这样做。 SO_PASSCRED 使能/禁能接收 SCM_CREDENTIALS 控制消息。更多信息参考 unix(7)。 SO_PASSSEC 使能/禁能接收 SCM_SECURITY 控制消息。更多信息参考 unix(7)。         更多选项阅读下一篇 【计算机网络】网络编程接口 Socket API 解读9 5.注意 Linux 假定发送/接受缓冲区的一半用于内部内核结构因此对应的 /proc 文件大小是线上可观测大小的两倍。 Linux 只有在之前调用 bind(2) 程序和新程序都设置了 SO_REUSEADDR 时才会允许端口重用。这个和其他实现如 FreeBSD) 只要求新程序设置就好了是不一样的对于服务器程序总是设置这个选项的情况这个区别是不可见的。 6.示例代码 下面是一个 getsockopt 函数的使用代码 int rc; int s; int option_value; int option_len; struct linger l; int getsockopt(int s, int level, int option_name, char *option_value,int *option_len);⋮ /* Is out-of-band data in the normal input queue? */ option_len sizeof(int); rc getsockopt(s, SOL_SOCKET, SO_OOBINLINE, ( char *) option_value, option_len); if (rc 0) {if (option_len sizeof(int)){if (option_value)/* yes it is in the normal queue */else/* no it is not*/} }⋮ /* Do I linger on close? */ option_len sizeof(l); rc getsockopt(s, SOL_SOCKET, SO_LINGER, (char *) l, option_len); if (rc 0) {if (option_len sizeof(l)){if (l.l_onoff)/* yes I linger */else/* no I do not */} }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

东莞网站建设哪个平台好wordpress装到哪里

STL内建了一些函数对象。分为:算数类函数对象,关系运算类函数对象,逻辑运算类仿函数。这些仿函数所产生的对象,用法和一般函数完全相同,当然我们还可以产生无名的临时对象来履行函数功能。使用内建函数对象,需要引入头文件 functi…

佛山新网站建设渠道长沙短视频制作

MySQL 中的集群部署方案 前言 这里来聊聊,MySQL 中常用的部署方案。 MySQL Replication MySQL Replication 是官方提供的主从同步方案,用于将一个 MySQL 的实例同步到另一个实例中。Replication 为保证数据安全做了重要的保证,是目前运用…

晟合建设集团网站课程网站建设总体情况

特效是游戏制作不可或缺的一环,作为游戏开发者最重要的工作就是将特效添加到游戏中,并在合适的时机、合适的位置将特效播放出来,同时还要注意特效的管理和销毁。 某些种类的特效,如动效、贴花,还要编写脚本代码以实现…

做软件项目的网站营业执照怎么注销

2023年是《5G应用“扬帆”行动计划(2021—2023年)》的收官之年,5G融合应用正在从点状示范向规模化发展。截至2023年10月底,我国开通5G基站总数达321.5万个,已经建成了全球规模最大、技术领先的5G网络。目前&#xff0c…

池州哪里做网站网站建设网络推广

文章目录 示例1:角色与装备系统示例2:UI控件库示例3:渲染引擎模块示例4:AI决策树算法示例5:物理模拟引擎 在Unity游戏开发中,桥接模式(Bridge Pattern)是一种设计模式,它…

网站上的充值链接怎么做wordpress toc

LCR 076. 数组中的第 K 个最大元素 题目链接:LCR 076. 数组中的第 K 个最大元素 下面这个题与这个题一样: 题目链接:215. 数组中的第K个最大元素 这个代码只能通过第一个题,如下: class Solution { public:int fin…

高端旅游的网站建设新人跑业务怎么找客户

在学习使用websocket之前我们先了解一下websocket: WebSocket是一种在单个TCP连接上进行全双工通信的通信协议。与HTTP协议不同,它允许服务器主动向客户端发送数据,而不需要客户端明确地请求。这使得WebSocket非常适合需要实时或持续通信的应…

网站建设哪些模板号wordpress手机登陆不了

2023年10.13日,下午1点,在北京大红门国际会展中心召开了中国人口文化促进会社区文化推广工作委员会成立暨2024社区春晚文艺活动新闻发布会。来自政府相关部门、社会组织、新闻媒体和公益企业界的相关领导与代表齐聚一堂,共襄盛举。 本次大会由…

php源码织梦网站需要优化

应急响应的基本思路 a. 收集信息:收集告警信息、客户反馈信息、设备主机信息等 b. 判断类型:安全事件类型判断。(钓鱼邮件、Webshll、爆破、中毒等) c. 控制范围:隔离失陷设备 d. 分析研判:根据收集回来的…

网站建设预算计算方法网站建设实验

文章目录 300.最长递增子序列思路代码实现 674. 最长连续递增序列思路代码实现 718. 最长重复子数组思路代码实现 300.最长递增子序列 题目链接 思路 单个字符都是一个长为1的子序列,直接初始化dp为1。先固定一个元素位置i,判断0-i范围内到i的最长子序…

医院网站官方微信精神文明建设网站制作软件下载安装

问题一、canape绘制目标时,二维结构体变量只能录制16个的解决办法 打开ASAP2 Studio 2.6 -Expert 软件。 把该软件中的设置项如下图进行修改。 然后用ASAP2 Studio 2.6 -Expert 软件 打开elf文件导出成A2L文件。 最后关闭该软件。 再在canape工程中重新加载刚才…

如花建站jsp做的网页是网站吗

摘要:基于OpenGL (ES)的跨平台2D/3D游戏开发框架libGDX不仅开源免费,而且具有极为强大的兼容性和高效性,近日,libGDX发布全新1.2.0版本,除修复Bug之外,还新增了OpenGL性能分析、gdx-ai等一系列功能扩展和方…

做网站需要什么编程语言教育网站建设网

160. 相交链表 1、题目2、题目分析3、解题步骤4、复杂度最优解代码示例5、抽象与扩展 1、题目 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向…

邯郸建设网站wordpress ip地址只能访问首页

微服务化的负载均衡组件源码剖析与实战开发全流程 什么是负载均衡负载均衡的种类服务器端负载均衡(S-LB)客户端负载均衡(C-LB)注解LoadBalancedLoadBalancerAutoConfiguration类LoadBalancerClient类源码分析 ServiceInstanceChoo…

国发网站建设中小企业认定证明

Detecting endosperm cracks in soaked maize using μCT technology and R-YOLOv7-tiny 1、模型1.1 C3_TR module(自己提出修改)1.2 CoT block注意力1.3 GhostConv模块2、模型整体流程图3、实验采用r - yolov7微模型和μCT技术对浸水玉米胚乳裂纹进行了检测。提出的ryolov7微…

珠宝网站形象设计广州建筑工程公司名单

程序员生活指南之 【蛀牙】如何选择牙刷,牙膏和牙杯(含其他日常牙具:牙线,漱口水,冲牙器) 文章目录 一、如何选择牙刷,牙膏和牙杯1、如何选择牙刷2、如何选择牙膏3、如何选择牙杯 二、日常牙具&…

网站怎么查询注册商网站建设工

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

企业网站关键词排名什么网站类型

线上会存在一种任务,定时或者手动出发,我们称之为“脚本”,也可以称之为“job” 一、脚本的特性 无过程:只有开始和结束,过程迅速且黑盒。无交互:脚本处理的业务场景都几乎没有交互,只有数据被…

南部县网站建设连连跨境电商网站怎么做

全国职业院校技能大赛 高等职业教育组 信息安全管理与评估 任务书 模块二 网络安全事件响应、数字取证调查、应用程序安全 比赛时间及注意事项 本阶段比赛时长为180分钟,时间为13:30-16:30。 【注意事项】 比赛结束,不得关机;选手首先需要…

网站国内服务器租用网站查询地址

/*出处:https://video.100ask.net/p/t_pc/course_pc_detail/column/p_6503fadfe4b064a82f0ab191本专栏一切无特殊声明的知识转述(源码、文字以及图表)版权均归属于百问网,源码仅供学习,请勿用于商业用途;不…