2

StreamSockets を介して FTP サーバーに接続しようとしていますが、何らかの理由でクラッシュし続け、読み取り中に次のエラーが表示されます。

WinRT 情報: 確立された接続が、ホスト コンピューターのソフトウェアによって中止されました。

1 つはポート 21 に接続し、もう 1 つはパッシブ モードに接続します。また、パッシブ モードの読み取り方法は常にクラッシュします。

これは私がデータを取得する方法です:

    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