3

私は、匿名ユーザーの多くが接続する(ゲームサービス)c#ネットワークアプリケーションを持っています。呼び出しストリームが読み込みをサポートしていません

今私は、ログをチェックして、時折、私はこの例外を参照してください。

[10:30:18.21352] System.Int32 Read(Byte[], Int32, Int32): The stream does not support reading. 
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) 
at BusinessLayer.Listener.ListenerWorker.ProcessClient(Object obj) in File.cs:line 141 

このエラーは、NetworkStreamオブジェクトから来て、今私は、問題を再現しようとしているが、どのようにしていますか?この例外をどうやって得ることができますか?

私は自分自身を切断しようとしましたが、タイムアウトを与えて他のものを試しましたが、動作させることはできません。

多分誰かがアイデアを持っていますか?ファイルの

内容は次のとおりです。

private static void ProcessClient(
    Object obj) 
{ 
    ISession session = (ISession)obj; 
    NetworkStream networkStream = null; 

    try 
    { 
     DebugUtility.SetThreadName("Worker: {0}", session.Name); 
     networkStream = session.TcpClient.GetStream(); 
     networkStream.ReadTimeout = Config.ReadTimeout; 

     // Loop received packets (blocks untill next packet) 
     Int32 packetSize; 
     Byte[] buffer = new Byte[session.PacketSize]; 
     while ((packetSize = networkStream.Read(buffer, 0, buffer.Length)) != 0) 
     { 
      // Get String from packet bytes 
      String packet = Encoding.UTF8.GetString(buffer, 0, packetSize); 

      // Check if packet has data 
      if (String.IsNullOrEmpty(packet)) 
       continue; 

      // Log biggest received package 
      DebugUtility.CheckMaxPacketSize(session.Name, packet.Length); 

      // Handle packet (in new thread) 
      Logger.DebugLog("Received: {0}", packet); 
      ThreadPool.QueueUserWorkItem(session.HandlePacket, packet); 
     } 
    } 
    catch (Exception ex) 
    { 
     Logger.LogException(ex); 
    } 
    finally 
    { 
     if (networkStream != null) 
      networkStream.Close(); 

     if (session != null) 
      session.Disconnect(); 
    } 
} 
+0

'File.cs'の行141とは何ですか? –

答えて

1

あなたは

System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) 

方法にはどのような引数を渡しています。 任意NetworkStream.LengthまたはNetworkStream.Positionプロパティを使用していますか。

すなわち、常に現在サポートされていないそのようNotSupportedExceptionをスローしますNetworkStream.LengthNetworkStream.PositionプロパティのMSDNドキュメント使用で説明したように、それは、その後

System.Net.Sockets.NetworkStream.Read(buffer, stream.Position, stream.Length) 

(ない正確に)のように気にいらないです。

+0

@ Rogier21 Readメソッドで渡している引数を表示することができます –

+0

私はソースファイルを追加しました。説明は必要ですが、例外はまれにしか発生しません。すべての呼び出しで。 – YesMan85

関連する問題