C# 通过ftp数据通道发送文件

C# 通过ftp数据通道发送文件,c#,file,ftp,C#,File,Ftp,我正在C#上编写自己的FTP服务器。到目前为止,一切进展顺利。 现在,由于FTP需要,它使用秒通道进行数据连接。在那里,它发送文件列表,发送/多个文件,并接受文件。 由于文件列表工作正常,我现在在下载文件时遇到问题。 几个FTP客户端只接收和保存一些字节。当我得到一个存储日志的文件时,它只会获取第一行的第一个字符。所以,原始数据根本不起作用。 注意:在RETR文件之前,客户机要求大小,服务器会回答 我有这个和平的代码发送一个文件使用数据连接 public void SendFile(String

我正在C#上编写自己的FTP服务器。到目前为止,一切进展顺利。 现在,由于FTP需要,它使用秒通道进行数据连接。在那里,它发送文件列表,发送/多个文件,并接受文件。 由于文件列表工作正常,我现在在下载文件时遇到问题。 几个FTP客户端只接收和保存一些字节。当我得到一个存储日志的文件时,它只会获取第一行的第一个字符。所以,原始数据根本不起作用。 注意:在RETR文件之前,客户机要求大小,服务器会回答

我有这个和平的代码发送一个文件使用数据连接

public void SendFile(String strFilename) {
    if(!m_bConnected) 
        Console.WriteLine("Waiting for connection on DataConnection");

    while(!m_bConnected) {
        Thread.Sleep(100);
    } // while end

    byte[] btFileContent = File.ReadAllBytes(strFilename);
    int iContentLen = btFileContent.Length;
    sw.Write(btFileContent, 0, iContentLen);
    sw.Close();
}
我做了一些网络调查。这与二进制/ASCII模式有关吗?在将文件发送到FTP客户端时,是否有其他规则需要查看?你对如何解决这个问题有什么想法吗

现在谢谢你


DeZio

除了需要进入二进制模式之外,这似乎没有什么问题。但是,您实际上不需要在内存中读取输入文件。查看从
FileStream
(在.NET4中有一种方便的
CopyTo
method,它使它成为一个单行线)。那么,如何传输大型文件(大于ram),您的解决方案是否可以实现这一点?