C# Winrt 8 StreamSocket错误SoftwareCausedConnectionBort
我正试图通过StreamSockets连接我的FTP服务器,但由于某些原因,它不断崩溃,并在读取时给我此错误: WinRT信息:主机中的软件中止了已建立的连接 我使用两个streamsockets,一个连接端口21,另一个连接被动模式。被动模式读取方法总是崩溃 这是我检索数据的方式: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) {
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数据包。一旦你拿到它们,我们就可以看一看,看看到底发生了什么。