2

我正在尝试通过 StreamSockets 与我的 FTP 服务器连接,但由于某种原因,它不断崩溃并在阅读时给我这个错误:

WinRT 信息:已建立的连接被主机中的软件中止。

我正在使用两个流套接字,一个用于连接端口 21,另一个用于被动模式。并且被动模式读取方法总是崩溃。

这就是我检索数据的方式:

    async public Task RetreiveData()
    {
        try
        {
            if (rdr == null)
            {
                rdr = new DataReader(dataSocket.InputStream);
                rdr.InputStreamOptions = InputStreamOptions.Partial;
            }


            await rdr.LoadAsync(1024);
            if (rdr.UnconsumedBufferLength > 0)
            {
                Debug.WriteLine("Data response");
                response += rdr.ReadString(rdr.UnconsumedBufferLength);
                Notify = true;
            }
            else
            {
                Done = true;
                OnReceivedMessageChanged(response);
            }

        }
        catch (Exception ex)
        {
            throw;
        }

    }

并像这样在后台工作人员中循环它

    async void dataworker_DoWork(object sender, DoWorkEventArgs e)
    {
        while (true)
        {
            await RetreiveData();
        }
    }

这就是我创建套接字的方式

            StreamSocket dataSocket = new StreamSocket();
            StreamSocketControl controller = dataSocket.Control;
            controller.KeepAlive = true;

            await dataSocket.ConnectAsync(new HostName(_server), port.ToString());

有趣的是,在我的被动流套接字崩溃后,我的端口 21 流套接字从服务器返回 226 状态码。

我正在为这个而头晕目眩。

4

0 回答 0