VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 273|回复: 3

[已解决] 远控封装MyRecv接收方法

[复制链接]
38_avatar_middle
online_vip 2191265529 发表于 2018-4-21 13:09:12 | 显示全部楼层 |阅读模式
本帖最后由 2191265529 于 2018-4-22 10:51 编辑
  1. int CMySocket::MyRecv(SOCKET socket, char* buf, int bytes)
  2. {
  3.         char *b = (char*)buf;
  4.         while (bytes > 0)
  5.         {
  6.                 int r = recv(socket, b, bytes, 0);
  7.                 if (r < 0)
  8.                 {
  9.                         return 0;
  10.                 }
  11.                 else if (r == 0)
  12.                 {
  13.                         break;
  14.                 }
  15.                 bytes = bytes - r;
  16.                 b = b + r;
  17.         }
  18.         return b - (char*)buf;
  19. }
复制代码


1.recv()方法返回r = 0代表接收失败,可是MSDN中没有写recv()方法返回0的方法;
2.return b - (char*)buf;代表的是指针的位移,表明recv接收数据有效。我怎么感觉不好看,都是这样写的吗
1.jpg




上一篇:屏幕监控模块设计
下一篇:记录集只读问题

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2018-4-21 13:25:09 | 显示全部楼层
1、MSDN中这不是明确说着呢么?
If the connection has been gracefully closed, the return value is zero.

2、因为可能接收的数据量比较多,比较大,比如对方发送过来1个G的文件,所以 recv 不可能一次都接收过来,一般都是要循环接收的。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

38_avatar_middle
ico_lz  楼主| 2191265529 发表于 2018-4-21 22:06:40 | 显示全部楼层
Syc 发表于 2018-4-21 13:25
1、MSDN中这不是明确说着呢么?
If the connection has been gracefully closed, the return value is zer ...

代码中if(r<0)这个条件能成立吗,r没有返回0的可能性啊?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-4-22 00:09:17 | 显示全部楼层

我上面的帖子不是回答了吗?
1、MSDN中这不是明确说着呢么?
If the connection has been gracefully closed, the return value is zero.
如果连接被关闭了,那么 recv 就返回 0

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-8-19 10:03

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表