C # Как разделить UDP-пакеты? - PullRequest
0 голосов
/ 08 апреля 2011

Я использую класс UdpClient для отправки пакетов.

Кажется, что существует ограничение на размер пакета, так как большие пакеты никогда не достигают своего места назначения. Я попытался уменьшить размер пакета, что позволяет пакетам достигать места назначения. Я где-то читал, что «стандартный» размер пакета составляет 512 байт.

Но мне все еще нужно отправлять объекты размером более 512 байт.

Так что мой вопрос: есть ли в .NET встроенный способ разбить байтовый массив на более мелкие пакеты. Очевидно, что мне тоже нужно потом собирать разделенные пакеты.

Я видел метод SendFile в классе Socket, который, по-моему, должен был автоматически разбивать большие файлы. Но метод не позволяет вводить байтовый массив (только имя файла). Таким образом, он будет работать только для отправки данных, хранящихся на жестком диске, а не для данных в памяти.

Ответы [ 2 ]

0 голосов
/ 11 апреля 2011

Отправка большого блока данных по протоколу UDP выглядит несколько странно, поскольку при использовании UDP дейтаграммы не гарантированно поступают на другую сторону. И даже если они все прибывают, они не гарантированы в первоначальном порядке. Вы уверены, что хотите использовать UDP?

Киран Китинг был прав. TCP был лучшим выбором для моих нужд.

0 голосов
/ 08 апреля 2011

Функция Send в классе Socket принимает байтовый массив в качестве параметра.

http://msdn.microsoft.com/en-us/library/w93yy28a.aspx

Вы можете попробовать это вместо этого.

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