2011-06-30 9 views
3

私はソケットクライアントを持っていて、そこから着信データを読み取る正しい方法は何か疑問に思っていました。ソケットから着信データを読み取っていますか?

現在、私は以下の機能を使用しています。それによって呼び出される

private void _ReadResponsePackets() 
{ 
    while (_socket.Connected) 
    { 
     try 
     { 
      byte[] bytes = new byte[1500]; 
      _socket.Receive(bytes); 
      if (bytes.Length > 0) 
      LoginserverPackets.Enqueue(bytes); 
     } 
     catch (Exception ex) 
     { 
      _log.Write(ErrorType.ERROR, "[LOGINCLIENT] " + ex.ToString(), true); 
     } 
    } 
} 

は自身のスレッドです:

Thread _readDataThread = new Thread(_ReadResponsePackets); 
_readDataThread.Start(); 

あなたは私がmerellyパケットが受信読んでアップピリングています見ることができるようにキューリストはさらにスレッド化されますが、私の質問はここにあります:

  • 私はでThread.Sleepを使うべきですか?関数を読み込むかそのまま使用しますか?
  • のパフォーマンスまたはメモリ使用量に影響がありますか? またはThread.Sleepを使用していますか?

他のタフツはありますか?

+0

非同期ソケットを使用していますか?私はこれを使用するクラスを持っていますが、あなたは見たいのですが、ネット上にも多くの良い例があります。 – Jethro

+0

@Jethroは、実際にはソケットプログラミングに関する多くの背景を持っていませんし、最初にこの領域についていくつかの理解を得るために始めます。基本的に、私の場合、非同期ソケットを使用することでどのようなメリットが得られますか?私はソケットを使用していない場合でも、無限とメモリ消費量はまだ質問があります。 – Prix

+0

このポストを見てください。 http://stackoverflow.com/questions/2512356/sync-vs-async-sockets-performance-in-net – Jethro

答えて

0

ソケットがブロックモードになるので、Thread.Sleepを使用する必要はありません。 Listener

関連する問題