我正在使用C ++中的文件传输程序将文件转换为二进制文件,将字节保存在char *中,然后通过 TCP 发送该字符*连接到另一台计算机。然后另一台计算机在本地重新创建该文件。该程序确实有效,但我遇到了大文件的大问题!我无法分配足够的数组索引来包含字节!例如,如果我想发送一个600MB的文件,我需要一个带有600万个索引的char *。这有效。但是一旦我走得更高,程序根本无法分配内存而我会收到错误。
我的一位朋友建议我将文件分成块并按块执行传输块,但这会产生大量其他挑战,并且需要我基本上重写整个程序。
有没有办法解决这个问题?
答案 0 :(得分:6)
我的一位朋友建议我将文件分成块并按块执行传输块,但这会产生大量其他挑战,并且需要我基本上重写整个程序。
这就是为什么它被称为计算机科学,以及为什么一旦你掌握了这些挑战,你就可以前往这座城市并赚取大笔资金。
答案 1 :(得分:1)
我不知道转换为二进制的意思,但你不应该分配600MB +的内存,而是使用缓冲。
例如,要从磁盘发送文件:
您也可以使用内存映射(或Windows中的TransmitFile())。
如果您的数据需要转换: