使用TCP在C#中实现FTP客户端

nrc*_*ast 0 c# ftp tcp networkstream stream

我一直在乱用C#中的TCP套接字,我在与我设置的FTP服务器通信时遇到了一些麻烦.我最初可以连接并获得220消息,但是当我发送"USER nrcrast"命令时,我从未得到响应,并且DataAvailable属性返回false.谁知道我做错了什么?到目前为止,这是我的代码:

namespace TCPClient
{
public partial class TCPClientForm : Form
{


    private TcpClient myClient;
    NetworkStream stream;

    public TCPClientForm()
    {
        InitializeComponent();
        send();

    }

    void send()
    {

        while (true)
        {
            try
            {
                myClient = new TcpClient("nrcrast.dyndns.info", 21);
                break;
            }
            catch (SocketException ex)
            {
                Console.WriteLine(ex.ToString());
            }

        }
        stream = myClient.GetStream();
        int sendOffset = 0;
        int recOffset=0;

        int dataLength;
        Byte[] receiveData = new Byte[256];


        // wait for a response
        dataLength = stream.Read(receiveData, recOffset, receiveData.Length);
        String recvdMessage = System.Text.Encoding.ASCII.GetString(receiveData, 0, dataLength);
        Console.WriteLine(recvdMessage.ToString());
         recOffset+=dataLength;


        String message = "USER nrcrast";
        Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);
        stream.Write(data, 0, data.Length);
        sendOffset += data.Length;

        // wait for a response
        while (!stream.DataAvailable)
        {
        }
        dataLength = stream.Read(receiveData, 0, receiveData.Length);
        recvdMessage = System.Text.Encoding.ASCII.GetString(receiveData, 0, dataLength);
        Console.WriteLine(recvdMessage.ToString());


    }


}
Run Code Online (Sandbox Code Playgroud)

Sal*_*rpi 5

在黑暗中拍摄,你需要在命令的末尾放一个回车和新行

String message = "USER nrcrast\r\n"; 
Run Code Online (Sandbox Code Playgroud)

  • 毫不奇怪,微软总是反对所有标准!只是评论,没有人不高兴! (2认同)