网络编程学习_其他IO函数
来源:互联网 发布:照片数据恢复 编辑:程序博客网 时间:2024/06/07 01:35
一: 套接字超时: 一般通过select的timeout参数实现(timeout=NULL阻塞, =0的timeval非阻塞, 非0timeval超时)
fd_set rset;FD_ZERO(&rset);FD_SET(&rset,fd);timaval t;t.tv_sec=5;t.tv_usec=0;int ret = select(&rset,NULL,NULL,&t);if(ret=0) printf("timeout!\n");else read(fd,buf,buflen);
二, recv和send 函数
#include <sys/socket.h>
ssize_t recv(in fd, void* buf, size_t len,int flags);
ssize_t send(int fd, const void* buff, size_t len, int flags);
这两个函数币read/write 多了一个flags参数,用来设置模式,一般情况下设为0,其中可能用到的的有:
MSG_DONTWAIT: 仅本次操作阻塞
MSG_PEEK:查看收到的数据, 而这些数据不会被丢弃(即可以多次recv), 经常与MSG_DONTWAIT同时使用
MSG_WAITALL: 等待所有数据, 可用于实现"等到某个固定数目的数据可读为止" 的需求
三,readv和writev函数
#include <sys/uio.h>
ssize_t readv(int fd, const struct iovec* iov, int iovcnt);
ssize_t writev(int fd, const struct iovec* iov, int iovcnt);
struct iovec{
void* iov_base;
size_t iov_len;
};
这两个函数被称为分散读/集中写
readv 会一次读入多个buf, 并且总是读满一个再读入下一个
writev 将多个buf中的数据写出去, 起重要应用是可以避免TCP的Negle算法
四:标准C函数
可以用fdopen打开一个fd来获得一个FILE*, 但是每次读写操作必须要进行fflush操作
这样做的其中一个好处是可以用fprintf来直接输出/输入格式化信息,(从而省掉缓冲区)
不过最好不要这样用~, 以避免一些可能奇怪的问题.
- 网络编程学习_其他IO函数
- 网络编程学习_基本socket函数
- 网络编程_高级函数
- java学习_网络编程
- Linux网络编程--IO函数以及示例
- 其他_函数归总
- 网络编程_非阻塞与io复用
- 网络编程学习_套接字选项
- 黑马程序员_网络编程学习笔记
- Android学习笔记 day04 _ 网络编程
- 黑马程序员_网络编程学习笔记
- 网络编程学习:io模型之io多路复用
- 黑马程序员_学习日记十二_网络编程
- 黑马程序员_学习笔记_Java基础_网络编程
- 网络编程数据处理_学习笔记_第七周
- UNIX网络编程笔记(10)—高级IO函数
- 网络编程IO笔记
- Java -网络IO编程
- poj_1000
- 2014的一些目标
- UVa 10010 沃尔多夫在那里
- 可复用的静态链表
- 验证码识别image/pdf to string 开源工具
- 网络编程学习_其他IO函数
- java编程规范(常用的)
- python2.6 pyc反编译
- FusionCharts 3D环饼图
- CSS positioning的一些整理
- CentOS 6.3 架设PPTP VPN的方法
- ThinkPad X230I 预装Win8换其它系统前的BIOS设置
- 全国(大学)高等教育各学科视频教学全集
- FusionCharts 3D环饼图报错