2011-12-22 11 views
0

ようこそ!FTPステータスコードの応答が機能しない

私は自分のアプリケーションに少し問題があります。このアプリは、FTPサーバに接続することができます。しかし、私の問題は、ユーザーが悪いユーザー名やパスワードを使用すると、プログラムが応答statucodeを受信しないということです。どうしましたか? 私は コード(usernemまたは/およびパスワードなど)を調べるために、このからstatusCodeにいくつかの句を使用したいと思います:

public static void ReadResponse() 
    { 
     result = ParseHostResponse(); 
     statusCode = int.Parse(result.Substring(0, 3)); 
     statusMessage = "";  
    } 

ParseHostResponse()メソッドは次の含まれています コード:

public static string ParseHostResponse() 
    { 
     SocketAsyncEventArgs socketEventArg = new SocketAsyncEventArgs(); 
     socketEventArg.RemoteEndPoint = socket.RemoteEndPoint; 
     socketEventArg.SetBuffer(buffer, BUFFER_SIZE, 0); 

     socketEventArg.Completed += new EventHandler<SocketAsyncEventArgs>(delegate(object s, SocketAsyncEventArgs e) 
     { 
      if (e.SocketError == SocketError.Success) 
      { 
       statusMessage = Encoding.UTF8.GetString(e.Buffer, e.Offset, e.BytesTransferred); 
       statusMessage = statusMessage.Trim('\0'); 
      } 
      else 
      { 
       statusMessage = e.SocketError.ToString(); 
      } 

     }); 

     socket.ReceiveAsync(socketEventArg); 

     string[] msg = statusMessage.Split('\n'); 
     if (statusMessage.Length > 2) 
     { 
      statusMessage = msg[msg.Length - 2]; 
     } 
     else 
     { 
      statusMessage = msg[0]; 
     } 

     if (!statusMessage.Substring(3, 1).Equals(" ")) 
     { 
      return ParseHostResponse(); 
     } 

     return statusMessage; 
    } 

の場合私はReadResponse()メソッドにこの例外のVisual Studio答えを招待します:NullReferenceException

このコードの中で: コード:

. 
. 
string[] msg = statusMessage.Split('\n'); 
. 

何が間違っていますか?このコードの問題http://msdn.microsoft.com/en-us/library/hh202858%28v=vs.92%29.aspx#BKMK_RECEIVING

ありがとうございます!

答えて

0

私は助けるが、これらの側の発言で開始することはできません。

  • statusMessage.Trim( '\ 0')は動作しません(それを試してみてください)
  • statusMessage.Split( '\

私はWP7でソケットを使用したことはありませんでしたが、非同期操作について知っていることから、非同期操作を開始するように見えます。応答が到着する前に(ReceiveAsyncを呼び出して)結果(statusMessage)を使用します。

  • 悪い名前:それは実際に通信
  • 悪いの機能を実行しながら、応答の解析を示します。この方法は、同期のパタパタを示しますが、

    はParseHostResponse()メソッドのデザインについて少しは考えます内部的に非同期パターンを使用します。すべての解決策が間違っているように私はここに何を示唆するべきか分かりません。例えば、レスポンスを待つと、UIは無責任になります。

私の主な推奨事項は、非同期プログラミングに関する詳細情報を入手し、それに応じてアプリケーションを再プログラミングすることです。

関連する問題