我正在编写一个 FTP 服务器(在 Qt/C++ 中),现在我对“TYPE A”使用“200 Ok”,但我真的把它当作“TYPE I”对待——文件按原样发送。
我应该如何正确实施 TYPE A?以文本模式而不是二进制模式打开文件就足够了吗?
另外,我假设 SIZE 方法应该比在磁盘上返回文件的大小更复杂,它应该读取它并执行文本替换,然后以这种方式返回大小?
编辑:作为对评论的回应,以下是 RFC959 规范的相关摘录:
3.1.1.1. ASCII TYPE This is the default type and must be accepted by all FTP implementations. It is intended primarily for the transfer of text files, except when both hosts would find the EBCDIC type more convenient. The sender converts the data from an internal character representation to the standard 8-bit NVT-ASCII representation (see the Telnet specification). The receiver will convert the data from the standard form to his own internal form. In accordance with the NVT standard, the <CRLF> sequence should be used where necessary to denote the end of a line of text. (See the discussion of file structure at the end of the Section on Data Representation and Storage.) Using the standard NVT-ASCII representation means that data must be interpreted as 8-bit bytes. The Format parameter for ASCII and EBCDIC types is discussed below.