我正在用c ++做一个文件传输程序。它工作但唯一的问题是我使用getline而不是read()。所以该程序似乎只做文本文件。我在文件中读到并存储在char * []中。所以我想知道当我把它改成二进制的read()并希望通过套接字发送它时,我需要在char * []之前进行转换(htons,htonl等)才能传递它吗?我读到某个地方,如果它是一个字母*,你不需要这样做。我错误地记录了如何存储文件中的信息吗?
总结: 如何存储从二进制打开的文件读入的信息? 如果它存储在char * []中,我是否需要使用htons ...以及如何使用? 我一次会通过套接字发送多少字节?
非常感谢大家的帮助!
答案 0 :(得分:2)
不,您不需要转换文件数据,按原样发送/读取。
然而,您应该做的是将文件大小分配给变量,将其转换为htonl()
,然后在发送文件数据之前发送它。然后接收器可以读取文件大小,将其转换为ntohl()
,并知道要为文件数据读取多少字节,以便知道何时停止读取以及是否接收到完整文件。