这个函数看不懂奇怪,高手帮看下
时间:2010-09-15
来源:互联网
- int my_recv(int fd,void *buffer,int length)
- {
- int bytes_left;
- int bytes_read;
- char *ptr;
- bytes_left=length;
- while(bytes_left>0)
- {
- bytes_read=recv(fd,ptr,bytes_read,0);
- if(bytes_read<0)
- {
- if(errno==EINTR)
- {
- bytes_read=0;
- }else{
- return(-1);
- }
- }else if(bytes_read==0){
- break;
- }
-
- bytes_left-=bytes_read;
- ptr+=bytes_read;
- }
- return(length-bytes_left);
- }
作者: jd808 发布时间: 2010-09-15
前面少了ptr = buffer,recv里面应该是bytes_left
循环接收数据吧
循环接收数据吧
作者: hellioncu 发布时间: 2010-09-15
确实少了ptr = buffer这么一句.
recv中的那个应该是bytes_left
recv中的那个应该是bytes_left
作者: liwangli1983 发布时间: 2010-09-15
- int my_recv(int fd,char *buffer,int length)
- {
- int bytes_left;
- int bytes_read;
- char *ptr;
- ptr = buffer;
- bytes_left=length;
- while(bytes_left>0)
- {
- bytes_read=recv(fd,ptr,bytes_left,0);
- if(bytes_read<0)
- {
- if(errno==EINTR)
- {
- bytes_read=0;
- }else{
- return(-1);
- }
- }else if(bytes_read==0){
- break;
- }
-
- bytes_left-=bytes_read;
- ptr+=bytes_read;
- }
- return(length-bytes_left);
- }
read error: Resource temporarily unavailable
这个错误,但我在外面用
if (recv(cfd, buf_s, sizeof(buf_s),0)< 0)
这种方法读确实可以读到数据的,大侠是什么原因啊
作者: jd808 发布时间: 2010-09-15
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28