第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 条评论
登录 后参与评论

相关文章

来自专栏陈满iOS

[iOS源码笔记]·第三方网络图片处理框架:SDWebImage网络下载及缓存管理策略

typedef void(^SDExternalCompletionBlock)(UIImage * _Nullable image, NSError * _N...

681
来自专栏岑志军的专栏

OC和Swift互相跳转

1364
来自专栏iOS122-移动混合开发研究院

ReactiveCocoa,最受欢迎的iOS函数响应式编程库(2.5版),没有之一!

简介 项目主页: ReactiveCocoa 实例下载: https://github.com/ios122/ios122 简评: 最受欢迎,最有价值的iOS响...

2458
来自专栏技术之路

ios 接收 c# socket udp 组播

最近用wcf 服务 给ios和安卓做接口,做了几个ios的项目  用udp 组播 让ios多终端接收和刷新方法 做一个简单的小例子会把工程给大家下载的   c#...

2178
来自专栏ios 技术积累

聊聊怎么阅读SDWebImage源码

关于SDWebImage的介绍就不多说了,网上很多。我们主要聊聊怎么阅读SDWebImage的源码。 阅读源码前首先我们要思考几个问题: 1.SDWebIm...

731
来自专栏哈雷彗星撞地球

iOS 中如何判断当前是2G/3G/4G/5G/WiFi

5G 什么的,还得等苹果API更新啊,不过将来还是这个处理过程就是了。 关于判断当前的网络环境是2G/3G/4G,这个问题以前经常看到,最近在一工程里看到了如...

1222
来自专栏iOS 开发

UIButton扩展Block点击事件

1663
来自专栏陈满iOS

iOS复习中有关SDWebImage可能知识点总结(2)

分为内存缓存(利用SDImageCache类的NSCache属性),磁盘缓存(利用NSFileManager),和操作缓存(利用runtime关联的字典属性)。...

1401
来自专栏iOS技术

iOS多线程应用(三):NSOperation

NSOperation是基于GCD的面向对象封装,在各大开源库里面我们常常看到它的身影。它的使用很简单易懂,基本上你点进Api就会用了,本文就最常用的功能进行讲...

32211
来自专栏慎独

UIViewController生命周期分析

1524

扫码关注云+社区