Socket.Send имеет задержку? - PullRequest
1 голос
/ 26 мая 2011

Я создаю приложение и отправляю данные обратно на другую сторону,

В моем приложении у меня есть:

System.Net.Sockets.Socket.Send(byte[]) функция.

Мой клиент сказал мне, что 530 ms delay получает этот пакет. Тем не менее, я вошел везде где: System.Net.Sockets.Socket.Send(byte[])

Я измерял, что для отправки массива из Socket потребовалось около 15 мс. Мой клиент посоветовал мне проверить:

  • Чтобы сбросить после отправки, но я не вижу flush function в сокете?
  • Заполните буфер данных перед отправкой, в противном случае, если данные короткие, я должен force the transmission

Один из этих советов верен? Я вижу, что есть также еще один параметр метода Send, который: SocketFlags <= Есть ли какая-либо помощь в использовании этого <code>SocketFlags?

1 Ответ

4 голосов
/ 26 мая 2011

Существует общая проблема с алгоритмом Nagle, который пытается «склеить» данные, отправленные вместе, в один пакет.Возможно, что ваш код страдает от этого.

Попробуйте отключить его, как показано здесь или установив параметр SocketOptionName.NoDelay с SetSocketOption метод.

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