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 ステータスコードを返します。
私はこれに頭を悩ませています。