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?
還有其他什麼?
你有沒有關於使用異步套接字?我有一個使用這個類的課程,你喜歡看,但網上有很多很好的例子。 – Jethro
@Jethro沒有,事實上我沒有太多的socket編程背景,並且像這樣開始,以便首先獲得對該區域的一些理解。基本上,我會從使用異步套接字中獲得什麼好處?此外,您對其他問題的理解也是如此;)即使我沒有使用套接字,但在內存消耗方面仍然存在一個問題,請參閱 – Prix
請在stackoverflow上查看此帖。 http://stackoverflow.com/questions/2512356/sync-vs-async-sockets-performance-in-net – Jethro