当前位置: 首页 > news >正文

佛山网站建设的设计原则官方网站欣赏

佛山网站建设的设计原则,官方网站欣赏,wordpress 软件公司,安阳做推广网站Socket 是网络协议栈暴露给编程人员的 API#xff0c;相比复杂的计算机网络协议#xff0c;API 对关键操作和配置数据进行了抽象#xff0c;简化了程序编程。 本文讲述的 socket 内容源自 Linux man。本文主要对各 API 进行详细介绍#xff0c;从而更好的理解 socket 编程。…         Socket 是网络协议栈暴露给编程人员的 API相比复杂的计算机网络协议API 对关键操作和配置数据进行了抽象简化了程序编程。 本文讲述的 socket 内容源自 Linux man。本文主要对各 API 进行详细介绍从而更好的理解 socket 编程。 udp(7) 1.库 标准 c 库libc, -lc 2.头文件 sys/socket.h 3.接口定义 #include sys/socket.h#include netinet/in.h#include netinet/udp.hudp_socket socket(AF_INET, SOCK_DGRAM, 0); 4.接口描述 这个是 RFC 768 中描述的 UDP 的实现它实现了无连接、不可靠数据包服务。数据包可能会在到达前重新排序或者重复UDP 通过发送端生成、接收端检查校验和来捕捉传输错误。 当 UDP 套接字创建好后其本地地址和对端地址还没有指定这时就可以通过 sendto(2) 或者 sendmsg(2) 发送报文只要携带一个有效的目的地址即可。如果在该套接字上使用 connect(2) 那么会设置默认目的地址可以通过 send(2) 或者 write(2) 发送报文这时不用指定地址了。同时还是可以通过 sendto(2) 或者 sendmsg(2) 发送到其他地址。为了接收数据报文套接字可以先通过 bind(2) 绑定到本地地址否则套接字层会自动从 /proc/sys/net/ipv4/ip_local_port_range 中自动分配一个端口并将地址指定为 INADDR_ANY。 所有接收操作只返回一个报文当报文小于几首缓冲区时会返回报文大小而当缓冲区小时会发生截断并设置 MSG_TRUNC 标记。不支持 MSG_WAITALLL 标记。 IP 选项可以通过 ip(7) 中讲的套接字选项来收发只有在 /proc/ 中对应的参数使能时才会被内核处理。关闭时也会传递给用户。参考 ip(7) 在发送时入股设置了 MSG_DONTROUTE 标记目标地址必须指定为一个本地接口地址数据包也是发给对应接口的。 默认情况下Linux UDP 进行路径 MTU最大传输单元 发现这意味着内核会持续跟踪指定目标 IP 地址上的 MTU一旦写超过就会返回 EMSGSIZE 错误。这种情况下应用应该减少数据包大小。路径 MTU 发现可以通过 /proc/sys/net/ipv4/ip_no_pmtu_disc 文件或者 IP_MTU_DISCOVER 套接字选项关闭。参考 ip(7) 查看更多信息。关闭后UDP 会对超过接口 MTU 的 UDP 包进行分片。但是从应性能或者可靠性方面考虑不建议关闭它。 地址格式 UDP 使用 IPv4 sockaddr_in 地址格式在 ip(7) 中描述。 错误处理 所有严重错误都会通过错误返回传递给用户即使套接字还没有连接这些包括从网络上接收到的异步错误。我们也可能会收到套接字上之前发送数据包导致的错误。这个行为和其他 BSD 实现不太一样其他在连接前是不会传递任何错误的。Linux 行为在 RFC 1122 中管理。 为了和之前的代码兼容Linux 2.0 和 2.2 中可以通过 SO_BSDCOMPAT SOl_SOCKET 选项在套接字连接后接收对端错误除了 EPROTO 和 EMSGSIZE。本地生成的错误总是会传递给用户的。后面这个选项就被删除了。参考 socket(7) 查阅更多信息。 当 IP_RECVERR 选项开启时所有错误都被存储到套接字错误队列中可以同 recvmsg(2) 通过 MSG_ERRQUEQUE 标记来获取。 /proc 接口 系统级的 UDP 参数可以通过 /proc/sys/net/ipv4/ 文件来访问 udp_memLinux 2.6.25 这个三元向量整数控制着所有 UDP 套接字可以排队的页数 min        比这个页数低时UDP 不会收到干扰当 UDP 分配的内容超过这个值时UDP 开始调节内存使用 pressure        这个数值在 tcp_mem 引入并进行介绍参考 tcp(7) max        所有 UDP  套接字允许排队的最大页数 udp_rmem_min整数默认值页大小Linux 2.6.25 后 UDP 接收缓冲区调整中的最小值字节数。每个套接字可以使用这个大小来接收数据即使 UDP 套接字总页数超过了 udp_mem pressure。 udp_wmem_min整数默认值页大小Linux 2.6.25 后 UDP 发送缓冲区调整中的最小值字节数同样即使 UDP 套接字总页数超过了 udp_mem pressure每个套接字仍然可以使用这个值来发送数据。 套接字选项 为了设置或者获取套接字选项可以通过 getsockopt(2) 来读取或者 setsockopt(2) 来设置 UDP 选项选项级别设置为 IPPROTO_UDP。除非特别备注否则 optval 是一个指向整型数的指针。 下面时一系列 UDP 相关的套接字选项。套接字其他更多详细选项也适用于 UDP参考 socket(7)。 UDP_CORKLinux 2.5.44 后 如果这个选项开启所有发送数据会累计到一个数据报文再发送否则会单独发送。这个选项在考虑到可移植性时不建议使用。 UDP_SEGMENTLinux 4.18 开启 UDP 分片降负载。这个选项能够降低 send(2) 的耗时通过将多个发送报文在内核最后发出前合并为一个大的数据包即便超出 MTU。这个功能更倾向于通过硬件实现也可以通过软件实现。这个选项携带 [0, USHRT_MAX] 中的一个值来设置分片大小数据报载荷不包含 UDP 头。 UDP_GROLinux 5.0 后 开启 UDP 接收降负载。如果开启这个选项套接字可以接收等效多个数据报文的数据缓冲区并通过 cmsg(3) 携带分段大小。这个选项是分片降负载的反过程。他能在内核接收路径上通过讲多个数据报等效于一个大数据包来降低耗时。这个选项不应该在移植场景下使用。 Ioctls 可以通过 ioctl(2) 来访问这些 ioctls对应的语法为 int value;error ioctl(udp_socket, ioctl_type, value); FIONREADSIOCINQ 获取一个整型数据指针返回下一个等待报文的整型大小或者没有等待报文时返回 0。警告使用 FIONREAD 时无法区分没有等待报文和等待报文长度为 0 情况。这种情况下使用 select(2)、poll(2)、epoll(7) 区分更安全。 TIOCOUTQSIOCOUTQ 返回本地发送队列上的数据数量Linux 2.4 后支持。 此外所有 ip(7) 和 socket(7) 中描述的 Ioctls 都支持。  5.返回值 所有 socket(7) 和 ip(7) 中定义的错误码都可能在 UDP 套接字的发送和接收函数返回。 ECONNREFUSED 目的地址没有关联的接收者。这个可能由之前套接字上发送的数据包导致的。  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.huolong8.cn/news/269663/

相关文章:

  • 灌南县建设局网站曲靖网站建设dodoco
  • gta5线下买房网站建设专业做app下载网站有哪些
  • 左侧固定导航栏的网站北屯网站建设
  • 网站效果图设计备案中的网站名称
  • 做ui什么图库网站好呀网站的开发包括哪两项
  • 提供信息门户网站制作平面构成作品网站
  • 科技设计网站有哪些兰州网站建设慕枫
  • 保定涿州网站建设vs2005做网站
  • 物联网概念北京网站设计十年乐云seo
  • 加网络网站建设工作室wordpress文章采集插件
  • 如何用网站模板做网站住建部禾建设部是一个网站吗
  • 网站被降权了怎么办离婚协议书模板免费下载
  • 省级网站 开发建设 资质网站建设主要推广方式
  • 万网 网站模板洛阳市新区建设投资有限公司网站
  • 北京平台网站建设价位技术外包
  • 查询类网站怎么做17一起做网店网站潮汕
  • 如何生成一个网站网站开发要注意的漏洞
  • 做景观园林的网站是wordpress 4.5.2 中文
  • 无锡网站推广优化公司百度推广开户怎么开
  • 青年文明号网站建设做网站代码难么
  • 长网址转短网址网站东营市城乡建设局网站
  • 网站建设推广方案策划书产品备案号查询官网
  • 公司年会宣传软文seo高级优化技巧
  • 深圳网站建设推广公司小程序代理须知
  • 清溪仿做网站如何给网站配置域名
  • 网站怎么做站内美化长沙 做网站
  • 如何让新网站快速收录平面设计软件有哪几种
  • 盐城网站建设渠道合作公司网站做好了还需
  • 软件或网站是怎么做的宣传的网站开发需要多少钱
  • 贝斯特专业网站wordpress实现伪静态