Чтение входящих данных из сокета? - PullRequest
3 голосов
/ 01 июля 2011

У меня есть Socket Client, и мне было интересно, как правильно читать входящие данные из него.

В настоящее время я использую следующую функцию:

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();

Как вы видите, я просто читаю и собираю пакеты, полученные в списке очередей, для дальнейшей их обработки, но мой вопрос здесь:

  • Должен ли я использовать Thread.Sleep в моей функции чтения или оставить его как есть?
  • Повлияет ли это больше на производительность или использование памяти, как есть, или на использование Thread.Sleep?

Есть ли другие проблемы?

1 Ответ

0 голосов
/ 01 июля 2011

Пожалуйста, проверьте следующую ссылку, сокет будет в режиме блокировки, поэтому вам не нужно использовать Thread.Sleep. Слушатель

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...