socket - recv函数使用心得
更新时间:2024-01-22 04:20:01 阅读量: 教育文库 文档下载
- socket编程推荐度:
- 相关推荐
recv的超时总结
说明:针对recv返回值,阻塞情况下,当网络异常时,recv是返回个-1,还是阻塞不动,还是根据情况而定呢 一
1. 不论是阻塞还是非阻塞,都是 <0:出错,=0:连接关闭,>0接收到数据大
小
2. Recv<0情况
1、特别:返回值 <0时并且(errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况下认为连接是正常的,继续接收。 2、只是阻塞模式下recv会阻塞着接收数据,非阻塞模式下如果没有数据会返回,不会阻塞着读,因此需要循环读取)。阻塞情况下,阻塞接收,不会返回负数吗?
3、很多人说阻塞模式下read会阻塞着读,是否这样?我和同事试了不会阻塞,而是会返回一个负数。对吗?
4、阻塞模式下read返回值 < 0 && errno != EINTR && errno != EWOULDBLOCK && errno != EAGAIN时,连接异常,需要关闭,read返回值 < 0 && (errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)时表示没有数据,需要继续接收,如果返回值大于0表示接送到数据。 二
getsockopt与setsockopt
1. getsockopt可以获取套接字的属性,Setsockopt可以设置套接字的属性。
Int getsockopt(int s, int level, int optname, void *optval, socketlen_t *optlen) int setsockopt(int s, int level, int optname, const void *optval, socketlen_t optlen)。两个函数成功返回0,失败返回-1,错误代码存于errno中。 2. S:套接字
Level:套接字选项操作的层次。可以取:SOL_SOCKET(通用套接字);IPPROTO_IP(IP 层套接字);IPPROTO_TCP(TCP 层套接字)。 Optname:套接字选项名称 Optval:套接字选项的值 Optlen:选项值的大小 3. 通用套接字的选项
a) SO_KEEPPALIVE:如果一段时间内没有反应,则关闭socket。若没
有设置此选项,则socket一直被阻塞。
b) SO_RCVLOWAT:接收缓冲区的下限,只有缓冲区数据超过了
SO_RCVLOWAT才会将数据传到上层应用层。 SO_SNDLOWAT:发送缓冲区的下限,……..才会将数据发送。 c) SO_RCVTIMEO:设置套接字的超时时间,见结构体 struct timeval. d) SO_BINDTODEVICE:将套接字绑定到特定的网络接口,如eth0。 e) SO_DEBUG:只能对TCP套接字使用,设置该选项后系统将保存TCP
发送和接收的所有数据相关信息。
f) SO_REUSEADDR:绑定套接字用到。套接字正常关闭或异常退出后
的一段时间内,端口依然维持原来的绑定状态,设置此选项后避免。 g) SO_TYPE:获取套接字的类型。SOCK_DGRAM、SOCK_STREAM… h) SO_ACCEPTCONN:检测套接字是否处于监听状态,0表示非监听
状态。1表示在监听。 i) SO_BROADCAST:决定套接字是否能够广播。类似于REUSEADDR
的用法。
j) SO_SNDBUF、SO_RCVBUF:用于设置套接字的发送和接收缓冲区
的大小。默认值是多少?
k) SO_ERROR:套接字上发生了异步错误,系统将设置套接字的
SO_ERROR,getsockopt调用后so_error的值将自动初始化。
三
多路复用select( )
四 测试实验(linux下测试)
1、 Client端与server端保持通信,3512板断电,client端recv堵住不动。 2、 断网,recv亦堵住不动。
3、 断网,send端发送数据也会堵住不动,为什么这与项目中的情况不一样?Winsocket么?
4、winsock send会堵住20秒或1分钟,随后便返回-1,这与理论上是不一样的(正常情况下,如果没有设置超时的话,send和client都会堵住不动)
5、 winsock recv正常,也会堵住
6、recv采取阻塞方式也不一定收len长度,应用while循环。
正在阅读:
socket - recv函数使用心得01-22
净水器加盟就选家用净水器品牌多伦斯05-15
关于数字的成语大全02-21
第八章 三维对象的表示08-28
SNS网络社区模式浅析07-18
公路工程施工图设计审查要点09-24
大学生小型创业计划书02-26
爱的六种遗憾11-03
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 函数
- 心得
- 使用
- socket
- recv