VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 720|回复: 3

[求助] 远控班的一些问题

[复制链接]
08_avatar_middle
online_vip 发表于 2017-2-22 09:46:22 | 显示全部楼层 |阅读模式
D:\11.png
这是远控教程的发送函数,没有使用自定义协议体的方法。每次存放数据的内存申请都是1024*5固定的,但是数据可能存不满。在发送前把整个内存都清0了,我想问的是当发送完真正的数据后,后面内存中的0也会当作数据的一部分发送过去么?此时recv的返回值是发送的真正数据的字节数+发送后面0的字节数?如果后面内存中的0不发送的话,那发送完真正数据后,就没有数据可发送了,但recv的第三个参数此时还不为0,这种情况recv是不是返回0?




上一篇:在状态栏上显示文字问题
下一篇:int main(array<System::String ^> ^args)
08_avatar_middle
ico_lz  楼主| 发表于 2017-2-22 09:47:13 | 显示全部楼层
//bytes=sizeof(MSGINFO)
int CMySocket::RecvCommand(SOCKET socket,char* buf,int bytes)
{
    char *b = (char*)buf;
    while(bytes > 0)
    {
        int r = recv(socket,b,bytes,0);
        if(r < 0)
        {
            return 0;
        }
        else if(r == 0)
        {
            break;
        }
        bytes = bytes - r;
        b = b + r;
    }
    return b - (char*)buf;
}
51_avatar_middle
online_admins 发表于 2017-2-22 09:50:00 | 显示全部楼层
志纯 发表于 2017-2-22 09:47
//bytes=sizeof(MSGINFO)
int CMySocket::RecvCommand(SOCKET socket,char* buf,int bytes)
{

1、后面内存中的0也会当作数据的一部分发送过去么?
没错,也会被发送过去

2、此时recv的返回值是发送的真正数据的字节数+发送后面0的字节数?
没错的

3、这种情况recv是不是返回0?
这种情况recv会一直等下去,直到超时!

所以,远控教程中的发送数据的方法有待改进,数据包多大就发送多大,不能每次都发送固定大小,效率上也不行,还是要使用自定义协议的方式来进行收发操作。
08_avatar_middle
ico_lz  楼主| 发表于 2017-2-22 16:08:51 | 显示全部楼层
多谢SYC。回答的简单明了!
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

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

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

GMT+8, 2019-5-23 22:13

Powered by Discuz! X3.4

© 2009-2019 cctry.com

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