用chilkat lib写文件scp

时间:2017-06-28 10:12:32

标签: c++ raspberry-pi sftp scp raspberry-pi3

我使用树莓派来存储一些文件。 我使用了Chilkat SSH / SCP lib并且正在工作。 我还有一个C ++程序,使用ascii(0-256)字符生成一个文件。 如果我用fwrite将文件写入我的本地磁盘,它将正确写入,但如果我尝试使用SCP附加到文件,它将只写一些部分。 我认为那是因为控制字符(0-31)。

编辑: 在source.cpp中:

while (!feof(filename))
{
size_t read = fread(&buf, 1, max_array, filename);
                    for (unsigned long long i = 0; i < read; i++)
                    {
                        char rdn = GetRandom_Soft();
                        num[i] = rdn;
                        buf[i] = buf[i] + rdn;
                    }
                    fwrite(&num, sizeof(char), read, filename2);
                    s7c.WriteKey((char *)rasp_file.c_str(), buf);
}

然后我有一个功能&#34; s7c.WriteKey&#34;与Chilkat lib:

int s7c_SFTP::WriteKey(char * filename, char * c)
{
    if (s7c_SFTP::bloked) return -1;
if (!s7c_SFTP::scp.UploadString(filename, c, "ansi"))
{
    cout << "[ERROR] Erro sending to device!" << endl;
    return -2;
}
return 0;
}

&#34; GetRandomSoft&#34;:

char otp_samega7cattac::GetRandom_Soft()
{
    return rand() % 256;
}

结果: 例如,你有一个1Mb文件的输入,所以文件genareted localy将具有相同的大小,他有这样的部分工作,但在树莓中生成的文件将更小,并且每次的大小都不相同我运行程序,所以我认为这是因为当我用随机数读取我读的内容时,如果在0到31之间,则lib不要写它。

原始文件(61个字节):

abcdefghijklmnopqrstuvyxwzABCDEFGHIJKLMNOPQRSTUVYXWZ123456789

本地文件(工作!61字节):

.覦 {5・&」jN)sエxG悵コrp焏Ь断・ムイノη`WP>・|auロ・lツn

Rasp(不,20个字节)#1尝试:

ÿ’_dN'–^N%eÖµ€%¤ŸAÞ

Rasp(差不多,58个字节)#2尝试:

vI³áœ€Ot×¼˜ã%»n%4>´F´@™U̦ܱÑÔÔ³«¥”ó[Ó»¦
(l¡øS¦G

这个文本框可以存在某种字符,但我没有这么大小!

编辑2:

现在我确定问题是控制字符!!!

我做了一个测试。如果随机字符和缓冲区的总和低于31我指定buf[i] = 'a';并且大小匹配!!!

但我不知道如何在树莓派中编写控制字符因为我需要所有字符(0-255)。

0 个答案:

没有答案