套接口基本操作
2012-12-09 20:15
204 查看
阻塞TCP套接口读操作:从内核发送缓冲区中读到数据就返回,有可能是单个字节。如果什么数据也没有,则阻塞在那里等待数据,除非对方关闭连接。
阻塞TCP套接口写操作:写操作会将数据从应用缓冲区拷贝到内核缓冲区,如果内核缓冲区满了,则阻塞。写操作返回了并不代表对方已经收到数据了,仅仅是表示数据拷贝进了内核缓冲区,可能还没有发送。
非阻塞TCP套接口读操作:没有数据可读,立刻返回。
非阻塞TCP套接口写操作:发送缓冲区满,则立即返回。发送缓冲区还有部分空,则拷贝部分数据,写操作的返回值就是拷贝进缓冲区的数据。
阻塞UDP套接口读操作:阻塞在那里,直到读到某个数据报。读缓冲区的分配长度要比期望收到的数据报的最大长度加1,这样如果收到长度等于缓冲区的数据报,则认为接收到了过大的数据报,直接丢弃。
UDP套接口没有真正的写缓冲区,发送的时候只是不同的协议层加上相应的头部,一般阻塞方式写操作不会阻塞,阻塞住了则是因为其他原因。
select函数的可读、可写、异常,三个参数只赋值一个。select返回即可读又可写,则表示套接口出错。返回-1表示错误,有可能是被信号中断了。
select函数可读描述字就绪条件:
a. 接收缓冲区中可读数据大于等于接收缓冲区的低潮标识--默认是1。也就是说一般TCP套接口,只要缓冲区中有数据可读就返回。UDP套接口,只要有数据报可读就返回。
select函数可写描述字就绪条件:
a.TCP套接口发送缓冲区中空闲的空间大于发送缓冲区的低潮标志-默认1024,也就是说,阻塞套接口select可写,一般仅仅表示发送缓冲区中有1024字节空闲,如果发送的数据大于1024,则还是可能会阻塞。如果该套接口不需要连接,也就是说UDP套接口select总是可写。
阻塞TCP套接口写操作:写操作会将数据从应用缓冲区拷贝到内核缓冲区,如果内核缓冲区满了,则阻塞。写操作返回了并不代表对方已经收到数据了,仅仅是表示数据拷贝进了内核缓冲区,可能还没有发送。
非阻塞TCP套接口读操作:没有数据可读,立刻返回。
非阻塞TCP套接口写操作:发送缓冲区满,则立即返回。发送缓冲区还有部分空,则拷贝部分数据,写操作的返回值就是拷贝进缓冲区的数据。
阻塞UDP套接口读操作:阻塞在那里,直到读到某个数据报。读缓冲区的分配长度要比期望收到的数据报的最大长度加1,这样如果收到长度等于缓冲区的数据报,则认为接收到了过大的数据报,直接丢弃。
UDP套接口没有真正的写缓冲区,发送的时候只是不同的协议层加上相应的头部,一般阻塞方式写操作不会阻塞,阻塞住了则是因为其他原因。
select函数的可读、可写、异常,三个参数只赋值一个。select返回即可读又可写,则表示套接口出错。返回-1表示错误,有可能是被信号中断了。
select函数可读描述字就绪条件:
a. 接收缓冲区中可读数据大于等于接收缓冲区的低潮标识--默认是1。也就是说一般TCP套接口,只要缓冲区中有数据可读就返回。UDP套接口,只要有数据报可读就返回。
select函数可写描述字就绪条件:
a.TCP套接口发送缓冲区中空闲的空间大于发送缓冲区的低潮标志-默认1024,也就是说,阻塞套接口select可写,一般仅仅表示发送缓冲区中有1024字节空闲,如果发送的数据大于1024,则还是可能会阻塞。如果该套接口不需要连接,也就是说UDP套接口select总是可写。
相关文章推荐
- JDBC应用程序常见接口API和基本操作步骤
- POSIX多线程--线程基本操作接口
- Collections接口的静态方法基本操作
- 在window下的Mysql基本操作以接口的方式封装并提供出来,C++多线程操作
- jdbc连接mysql + 基本操作接口
- JDBC常用类和接口及基本操作示例
- JDBC应用程序常见接口API和基本操作步骤
- HBase的Java接口基本操作:创建表插入查询删除
- 集合框架_用户登录注册案例详细分析和分包的实现、用户基本描述类和用户操作接口的实现、用户操作类的具体实现、用户测试类的实现、加入猜数字小游戏
- DAO接口的基本操作
- 一起来学POSIX thread 之 线程的创建和基本操作接口
- 北电ERS1600,8300,8600交换机的基本技术- 第三章: 接口操作
- hdfs基本操作-python接口
- MongoDB基本的操作及C接口使用-MongoDB C Driver
- Dao接口实现基本的数据库操作。增删改查
- 详解Spring Boot实战之Rest接口开发及数据库基本操作
- Spring Boot实战之Rest接口开发及数据库基本操作
- nutz框架Dao 接口的基本操作
- JEE数据库基本操作Basedao层通用接口的实现
- Dao 接口的基本操作