C# Winrt 8 StreamSocket错误SoftwareCausedConnectionBort

C# Winrt 8 StreamSocket错误SoftwareCausedConnectionBort,c#,windows-phone-8,windows-runtime,async-await,stream-socket-client,C#,Windows Phone 8,Windows Runtime,Async Await,Stream Socket Client,我正试图通过StreamSockets连接我的FTP服务器,但由于某些原因,它不断崩溃,并在读取时给我此错误: WinRT信息:主机中的软件中止了已建立的连接 我使用两个streamsockets,一个连接端口21,另一个连接被动模式。被动模式读取方法总是崩溃 这是我检索数据的方式: async public Task RetreiveData() { try { if (rdr == null) {

我正试图通过StreamSockets连接我的FTP服务器,但由于某些原因,它不断崩溃,并在读取时给我此错误:

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

我使用两个streamsockets,一个连接端口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());
有趣的是,在被动streamsocket崩溃后,我的端口21 streamsocket从服务器返回226个状态码


这件事让我头疼。

您可以使用网络监视器捕获应用程序和FTP服务器之间的TCP数据包。一旦你拿到它们,我们就可以看一看,看看到底发生了什么。