使用htonl& amp; htons

时间:2014-10-09 18:26:55

标签: c++ c sockets tcp

我正在用c ++做一个文件传输程序。它工作但唯一的问题是我使用getline而不是read()。所以该程序似乎只做文本文件。我在文件中读到并存储在char * []中。所以我想知道当我把它改成二进制的read()并希望通过套接字发送它时,我需要在char * []之前进行转换(htons,htonl等)才能传递它吗?我读到某个地方,如果它是一个字母*,你不需要这样做。我错误地记录了如何存储文件中的信息吗?

总结:  如何存储从二进制打开的文件读入的信息?  如果它存储在char * []中,我是否需要使用htons ...以及如何使用?  我一次会通过套接字发送多少字节?

非常感谢大家的帮助!

1 个答案:

答案 0 :(得分:2)

不,您不需要转换文件数据,按原样发送/读取。

然而,您应该做的是将文件大小分配给变量,将其转换为htonl(),然后在发送文件数据之前发送它。然后接收器可以读取文件大小,将其转换为ntohl(),并知道要为文件数据读取多少字节,以便知道何时停止读取以及是否接收到完整文件。