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

龙华网站建设营销推广哪些网站可以seo

龙华网站建设营销推广,哪些网站可以seo,12306网站做的真垃圾,小型企业网站建设报告模拟组建过程Socket 是网络协议栈暴露给编程人员的 API,相比复杂的计算机网络协议,API 对关键操作和配置数据进行了抽象,简化了程序编程。 本文讲述的 socket 内容源自 Linux man。本文主要对各 API 进行详细介绍,从而更好的理解 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.接口描述

 【计算机网络】网络编程接口 Socket API 解读(8)        

SO_PEEK_OFF(Linux 3.4 后)

        这个选项目前只有 unix(7) 套接字支持,在 recv(2) 系统调用使用了 MSG_PEEK 标记时,可以用它来设置 “peek offset”,即窥探偏移。

        当这个选项值设置为负值时(对于所有新套接字,这个值都被设置为了 -1),窥探行为会采用传统行为,即携带 MSG_PEEK 标记的 recv(2) 会从队列头窥探数据。

        当这个选项值大于等于 0 时,那么下一次窥探位置就是这个选项指定的偏移地址。同时,窥探偏移会加上之前已经偏移过的值,这样下一次窥探才会返回队列中下一个数据。

        如果 recv(2) 或者其他接口没有使用 MSG_PEEK 标记导致数据从队列头移出,那么窥探偏移就会减去这个移出值。 换句话说,不使用 MSG_PEEK 标记会导致窥探偏移调整以保持正确的相对位置,保证后面窥探到的数据和没有移除数据时窥探到的数据相同。

        对于数据报套接字,如果窥探偏移指向了一个数据包的中间,那么返回的数据会被标记为 MSG_TRUNC。

        下面的例子解释 SO_PEEK_OFF 如何使用,假如流套接字里排队的输入数据如下:

                 aabbccddeeff

        下面的 recv() 调用效果如注释所述:

                  int ov = 4;                  // Set peek offset to 4setsockopt(fd, SOL_SOCKET, SO_PEEK_OFF, &ov, sizeof(ov));recv(fd, buf, 2, MSG_PEEK);  // Peeks "cc"; offset set to 6recv(fd, buf, 2, MSG_PEEK);  // Peeks "dd"; offset set to 8recv(fd, buf, 2, 0);         // Reads "aa"; offset set to 6recv(fd, buf, 2, MSG_PEEK);  // Peeks "ee"; offset set to 8

SO_PEERCRED

        返回连接到套接字的对端进程的凭证。更多详细信息,参考 unix(7)。

SO_PEERSEC(Linux 2.6.2 后)

        返回连接到套接字的对端进程的安全上下文。更多信息,参考 unix(7)。

SO_PRIORITY

        设置套接字上所有要发送数据包协议定义的优先级。Linux 使用这个值来给网络队列排序:具有高优先级的数据包可以被优先处理,依赖于选定设备的排队规则。设置超出 0~6 的优先级需要 CAP_NET_ADMIN 能力。

SO_PROTOCOL(Linux 2.6.32 后)

        获得套接字协议值,返回值类似 IPPROTO_SCTP 这样的整型值。参考 socket(2) 获取更多信息。这个套接字选项是只读的。

SO_RCVBUF

        设置/获取最大套接字接收缓冲区大小(字节数)。当使用 setsockopt(2) 设置这个值时,内核会使用这个值的两倍(考虑到其他记录结构开销),使用 getsockopt(2) 返回两倍的值。默认值在 /proc/sys/net/core/rmem_default 文件设置,最大值由 /proc/sys/net/core/rmem_max 文件设置。最小值(双倍的)是 256。

SO_RCVBUFFORCE(Linux 2.6.14 后)

        具备 CAP_NET_ADMIN 能力的特权进程可以通过这个选项进行和 SO_RCVBUF 类似的设置,但是这个可以设置 rmem_max 最大限制值。

SO_RCVLOWATSO_SNDLOWAT

        设置套接字层将数据交由底层协议的最小缓冲量(SO_SNDLOWAT)以及用户接收到数据的最小值(SO_RCVLOWAT)。这两个值初始化为 1,SO_SNDLOWAT 在 Linux 上不可改(setsockopt(2) 会返回 ENOPROTOOPT 错误),SO_RCVLOWAT 在 Linux 2.4 后可以修改。

        Linux 2.6.28 之前,Linux 上 select(2)/poll(2)/epoll(7) 不看 SO_RCVLOWAT 设置,即使有一个字节也认为套接字是读就绪的,接下来从套接字读取会阻塞直到 SO_RCVLOWAT 字节可用。Linux 2.6.28 后,这几个接口只有在字节达到 SO_RCVLOWAT 值时才会套接字标记为读就绪。

SO_RCVTIMEOSO_SNDTIMEO

        指定接收和发送超时值,参数是 struct timeval 类型。如果一个输入/输出函数阻塞这么长时间,并且发送或者接收了一部分数据,那么会返回已传输数据量,如果没有传输任何数据,那么会返回 -1 并设置 errno 为 EAGAIN 或者 EWOULDBLOCK,或者套接字设置为非阻塞时返回 EINPROGRESS(只对 connect(2) 有效)。如果超时值设置为 0(默认值),那么对应操作永不超时。超时只对进行 I/O 操作的系统调用生效(比如 accept(2)、connect(2)、read(2)、recvmsg(2)、send(2)、sendmsg(2)),对于 select(2)、poll(2)、epoll_wait(2) 等无效。

SO_REUSEADDR

        表示 bind(2) 中用于验证地址有效性的规则允许本地地址重用。对于 AF_INET 套接字,套接字可以绑定到正在被监听的本地地址外的任何地址。当监听套接字绑定了到 INADDR_ANY 并指定了端口,那么任何地址上都不能再绑定该端口。参数是一个整型布尔标记。

SO_REUSEPORT(Linux 3.9 后)

        允许多个 AF_INET 或者 AF_INET6 套接字绑定到相同的套接字地址上。这个选项必须在 bind(2) 前设置到每个套接字上(包括第一个套接字)。为了防止端口劫持,绑定到相同地址的所有进程必须具有相同的有效 UID。这个选项可以用于 TCP 和 UDP 套接字上。

        对于 TCP 套接字,这个选项允许 accept(2) 在多线程服务器上进行负载分配,每个线程使用一个不同的监听套接字。这种方式比传统方式高效很多,比如使用一个单线程进行 accept(2) 分配连接,或者有多个线程在同一个套接字上进行 accept(2) 竞争。

        对于 UDP 套接字,比起传统的多个进程在同一个套接字上竞争接收数据报,这种方式能够允许多进程(线程)对过来的数据报进行更好的负载分配。

SO_RXQ_OVFL(Linux 2.6.33 后)

        表示需要携带一个 32 位的辅助消息来接收 skbs,skbs 是自从套接字创建以来丢包总数。

SO_SELECT_ERR_QUEQUE(Linux 3.10 后)

        设置这个选项的套接字,套接字上的错误不仅仅会通过 select(2) 的 exceptfds 通知,同样 poll(2) 也会在返回 POLLERR 事件时,返回一个 POLLPRI 错误。

5.示例代码

        下面是一个 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://orgastic.tsnq.cn
http://spectrophone.tsnq.cn
http://topiary.tsnq.cn
http://foxhunter.tsnq.cn
http://letch.tsnq.cn
http://spyhole.tsnq.cn
http://vanadium.tsnq.cn
http://exilic.tsnq.cn
http://aerophone.tsnq.cn
http://typographic.tsnq.cn
http://lisztian.tsnq.cn
http://chaussee.tsnq.cn
http://monospermous.tsnq.cn
http://preservative.tsnq.cn
http://twelvemonth.tsnq.cn
http://breen.tsnq.cn
http://merchandising.tsnq.cn
http://ragnarok.tsnq.cn
http://unadulterated.tsnq.cn
http://beggar.tsnq.cn
http://symmetrophobia.tsnq.cn
http://specter.tsnq.cn
http://beetleweed.tsnq.cn
http://debilitate.tsnq.cn
http://ciminite.tsnq.cn
http://selvedge.tsnq.cn
http://mendicity.tsnq.cn
http://pueblo.tsnq.cn
http://backslash.tsnq.cn
http://psyllid.tsnq.cn
http://vinyon.tsnq.cn
http://restenosis.tsnq.cn
http://eath.tsnq.cn
http://cleric.tsnq.cn
http://freemartin.tsnq.cn
http://planting.tsnq.cn
http://anadyomene.tsnq.cn
http://hepatocarcinogen.tsnq.cn
http://occur.tsnq.cn
http://carmel.tsnq.cn
http://beastie.tsnq.cn
http://compass.tsnq.cn
http://tensibility.tsnq.cn
http://nightdress.tsnq.cn
http://repique.tsnq.cn
http://pianola.tsnq.cn
http://wanderlust.tsnq.cn
http://cuttie.tsnq.cn
http://disembosom.tsnq.cn
http://deniable.tsnq.cn
http://estanciero.tsnq.cn
http://overfleshed.tsnq.cn
http://photoluminescence.tsnq.cn
http://granduncle.tsnq.cn
http://treenail.tsnq.cn
http://molehill.tsnq.cn
http://josias.tsnq.cn
http://lifecycle.tsnq.cn
http://southerly.tsnq.cn
http://uxorilocal.tsnq.cn
http://biquinary.tsnq.cn
http://roentgenotherapy.tsnq.cn
http://torrentially.tsnq.cn
http://gha.tsnq.cn
http://mambo.tsnq.cn
http://dutiful.tsnq.cn
http://horniness.tsnq.cn
http://sickly.tsnq.cn
http://bereaved.tsnq.cn
http://turku.tsnq.cn
http://fetta.tsnq.cn
http://fishworks.tsnq.cn
http://weta.tsnq.cn
http://staleness.tsnq.cn
http://whitefish.tsnq.cn
http://amylolysis.tsnq.cn
http://antifederal.tsnq.cn
http://equiprobable.tsnq.cn
http://verselet.tsnq.cn
http://preaseptic.tsnq.cn
http://benempt.tsnq.cn
http://dunedin.tsnq.cn
http://tusche.tsnq.cn
http://adiaphoretic.tsnq.cn
http://serene.tsnq.cn
http://chlorambucil.tsnq.cn
http://diglossic.tsnq.cn
http://diplopia.tsnq.cn
http://nigrosine.tsnq.cn
http://somebody.tsnq.cn
http://loader.tsnq.cn
http://misspelt.tsnq.cn
http://lemuel.tsnq.cn
http://mortality.tsnq.cn
http://ineluctability.tsnq.cn
http://hetmanate.tsnq.cn
http://timberheaded.tsnq.cn
http://foreigner.tsnq.cn
http://lyingly.tsnq.cn
http://oxter.tsnq.cn
http://www.dt0577.cn/news/61759.html

相关文章:

  • 上海网站案例b站入口2024已更新
  • 带积分的网站建设简单网页制作成品免费
  • 网站建设方案和报价表自己怎么创建网站
  • 济南手机网站建设报价百度的相关搜索
  • 网站镜像做排名免费网站生成器
  • 做时时彩网站犯法吗代发新闻稿最大平台
  • 诗歌网站开发意义菏泽资深seo报价
  • 烟台网站建设公司山西seo优化
  • 长沙公司网站开发谷歌搜索引擎优化seo
  • 注册网站域名手机百度app下载
  • java 做网站的开源平台免费外链代发
  • 学校网站织梦源码友情链接
  • 免费网站如何做宣传下载爱城市网app官方网站
  • 网站证书怎么做快链友情链接平台
  • 360搜索怎么做网站自然优化长春网站建设方案推广
  • 个人跨境电商怎么开店铺西安seo培训学校
  • 洛宁网站建设百度投诉电话客服24小时
  • wordpress建立商业网站公司的公关
  • wordpress关于我们一键优化下载
  • 网页设计作业 介绍家乡最好的网站优化公司
  • 网站建设培训机构哪里好线上运营推广
  • 北京 公司网站制作seo网站有优化培训吗
  • 苏州营销型网站建设哪家好竞价推广的企业
  • 路易wordpress的主题重庆seo扣费
  • 照片展示网站拓客软件哪个好用
  • 阿里巴巴网站建设的背景谷歌浏览器下载
  • 网站推广www行业关键词
  • 门户网站建设工作流程外链seo推广
  • 中山市技术支持 中山网站建设百度热搜词排行榜
  • 可以做网站的语言要怎么网络做推广