前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第14章 高级I/O函数

第14章 高级I/O函数

作者头像
_gongluck
发布2018-03-09 15:34:35
6560
发布2018-03-09 15:34:35
举报
文章被收录于专栏:转载gongluck的CSDN博客

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

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

代码语言:javascript
复制
#include <unistd.h>

ssize_t read(int fd, void *buf, size_t count);
ssize_t write(int fd, const void *buf, size_t count);
代码语言:javascript
复制
#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);
代码语言:javascript
复制
#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);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年11月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档