Каков второй параметр TCPSocket.отправить в Ruby?

StackOverflow https://stackoverflow.com/questions/1147557

  •  18-09-2019
  •  | 
  •  

Вопрос

Я использую эту строку для отправки сообщения через сокет Ruby (1.8.7):

@@socket.send login_message, 0

(Это работает нормально)

Для чего нужен второй параметр?Я не могу найти метод отправки в документах Ruby API...

Сначала я подумал, что это была некоторая длина сообщения в стиле C.Вот почему я использовал login_message.длина в качестве второго параметра.Это сработало, но я столкнулся со странным поведением:

Все работает нормально, когда вторым параметром является нечетное число.Если это четное число, последний символ теряется при приеме на другой стороне (другая сторона - это программа на C ++ с сокетом C).Я проверил сетевой трафик с помощью Wireshark и заметил, что пакеты выглядят хорошо.Все данные являются полными.Почему последний символ теряется, когда я его получаю?

Спасибо Леннарт

Это было полезно?

Решение

Это параметр flags, такой же, как и последний параметр для send() системный вызов.Обычно это должно быть 0, но может быть что-то вроде Socket::MSG_OOB (для отправки внеполосных данных).Для Ruby 1.9 это задокументировано в разделе Базовый карман.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top