第14章 高级I/O函数

设置套接字时间限制: 1、使用alarm函数和SIGALRM信号 2、使用由select提供的时间限制

3、使用SO_RCVTIMEO和SO_SNDTIMEO套接字选项

#include <unistd.h>

ssize_t read(int fd, void *buf, size_t count);
ssize_t write(int fd, const void *buf, size_t count);
#include<sys/uio.h>

struct iovec
{
void* iov_base;
size_t iov_len;
};

ssize_t readv(int filedes, const struct iovec* iov, int iovcnt);
ssize_t writev(int filedes, const struct iovec* iov, int iovcnt);
#include <sys/types.h>
#include <sys/socket.h>

ssize_t recv(int sockfd, void *buf, size_t len, int flags);
ssize_t send(int sockfd, const void *buf, size_t len, int flags);

ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
                struct sockaddr *src_addr, socklen_t *addrlen);
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
                const struct sockaddr *dest_addr, socklen_t addrlen);

struct msghdr
{
   void      *msg_name;       /* optional address */
   socklen_t   msg_namelen;    /* size of address */
   struct iovec  *msg_iov;        /* scatter/gather array */
   size_t     msg_iovlen;     /* # elements in msg_iov */
   void      *msg_control;    /* ancillary data, see below */
   size_t     msg_controllen; /* ancillary data buffer len */
   int      msg_flags;      /* flags on received message */
};			
ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags);
ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags);

struct cmsghdr {
    socklen_t cmsg_len;    /* data byte count, including header */
    int       cmsg_level;  /* originating protocol */
    int       cmsg_type;   /* protocol-specific type */
    /* followed by unsigned char cmsg_data[]; */
};
struct cmsghdr *CMSG_FIRSTHDR(struct msghdr *msgh);
struct cmsghdr *CMSG_NXTHDR(struct msghdr *msgh, struct cmsghdr *cmsg);
size_t CMSG_ALIGN(size_t length);
size_t CMSG_SPACE(size_t length);
size_t CMSG_LEN(size_t length);
unsigned char *CMSG_DATA(struct cmsghdr *cmsg);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏coding...

Atom插件开发-使用自己的Chevereto图床API项目简介功能分析代码实现项目地址

最近一直在用 Atom 写写markdown,但无奈上传图片真实太麻烦了。找了好几个插件都是要用到 七牛 的账号,由于之前被七牛坑过一次,就没再想用他的打算了。...

702
来自专栏张善友的专栏

WPF E 文章汇总

MSDN "WPF/E" (codename) Dev Center : http://msdn2.microsoft.com/en-us/asp.net/bb...

1759
来自专栏指尖下的Android

Execution failed for task ':app:processDebugManifest'. at org.gradle.api.internal.tasks.executio...

新项目需要用到视频播放,果断在项目中依赖了饺子播放器,因为用的人还挺多的,Stargazers有7.7K了,然后开始了我的采坑之路,不是说这个框架很坑,而是An...

1496
来自专栏张戈的专栏

WordPress发布/更新文章、提交/审核评论自动清理腾讯云CDN缓存

目前张戈博客同时使用了腾讯云、VeryCloud 以及七牛 CDN,其中腾讯云负责电信线路流量,VeryCloud 负责默认线路流量,而七牛主要是用于缩略图展示...

35010
来自专栏一个会写诗的程序员的博客

《Kotlin 程序设计》第二章 快速开始:HelloWorld

程序的本质就是映射(函数)。比如说kotlinc这个程序,我们知道,Kotlin基于Java虚拟机(JVM),通过Kotlinc编译器生成的JVM字节码与Jav...

491
来自专栏杨建荣的学习笔记

MongoDB触发oom-killer的简单处理(一)(r7笔记第54天)

今天正在处理问题,突然收到一封邮件,提示mongo的一个副本集出现了问题。邮件内容如下: 当前状态:PROBLEM 事件编号:11187790 发生时间:201...

3333
来自专栏码神联盟

ActiveMQ入门篇一入门实例2

继上两期的ActiveMQ的概念原理和经典示例之后,本期将隆重推出ActiveMQ是如何与SpringMVC进行集成使用的。 老规矩,在开始之前,先来点与之相关...

3319
来自专栏张戈的专栏

【腾讯云的1001种玩法】WordPress 发布/更新文章、提交/审核评论自动清理腾讯云CDN缓存

目前张戈博客同时使用了腾讯云、VeryCloud以及七牛CDN,其中腾讯云负责电信线路流量,VeryCloud负责默认线路流量,而七牛主要是用于缩略图展示,你觉...

8110
来自专栏Netkiller

Email 服务器之 SPF 记录

节选自《Netkiller Mail 手札》 6.1. Sender Policy Framework 6.1.1. 分析 SPF 记录 从主域开始查看 txt...

3386
来自专栏运维

DNS主从服务器搭建

http://blog.51cto.com/yichenyang/1911098 http://blog.51cto.com/wubinary/1379595

771

扫码关注云+社区