2011-06-30 169 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