2011-06-30 163 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沒有,事實上我沒有太多的socket編程背景,並且像這樣開始,以便首先獲得對該區域的一些理解。基本上,我會從使用異步套接字中獲得什麼好處?此外,您對其他問題的理解也是如此;)即使我沒有使用套接字,但在內存消耗方面仍然存在一個問題,請參閱 – Prix

+0

請在stackoverflow上查看此帖。 http://stackoverflow.com/questions/2512356/sync-vs-async-sockets-performance-in-net – Jethro

回答

0

請檢查以下鏈接,套接字將處於阻塞模式,因此您無需使用Thread.Sleep。 Listener