Каков второй параметр TCPSocket.отправить в Ruby?
Вопрос
Я использую эту строку для отправки сообщения через сокет 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 это задокументировано в разделе Базовый карман.