Пример пакета TFTP?

Я пишу TFTP-сервер на Ruby и не понимаю нескольких вещей.

Во-первых, я прочитал весь RFC и понял часть пакета TFTP (2 байты кода операции и т. д.), но я не знаю, куда идут TID. Кроме того, я никогда ничего не делал в Ruby на уровне байтов. Я не знаю, как создать переменную, состоящую из 2 байтов этого, затем 1 байта этого, а затем чего угодно.

Если бы кто-нибудь мог показать мне пример того, как создать пакет запроса на чтение в ruby, это было бы мило. Скажем, я на стороне клиента, выбираю порт #20000 (для своего локального TID) и хочу прочитать файл с именем /Users/pachun/documents/hello.txt на сервере, у которого прямо сейчас TID 69, потому что это первый запрос. Как мне создать этот пакет в Ruby?


person pachun    schedule 21.03.2013    source источник
comment
Можете ли вы сказать нам, как этот пакет будет выглядеть в двоичном виде, чтобы нам не пришлось читать весь RFC?   -  person Linuxios    schedule 22.03.2013
comment
Найдите порядок заголовков в RFC, и он должен быть в I. Приложение. Он описывает структуру пакета. РЕДАКТИРОВАТЬ: это второе появление Order of Headers в RFC.   -  person pachun    schedule 22.03.2013
comment
Первое, что нужно сделать, это показать код, над которым вы работали. Нам всегда проще исправить ваш код, чем писать что-то с нуля; Наш код может вообще не соответствовать вашей кодовой базе и может потребовать много доработок с вашей стороны или, что еще хуже, может оказаться непригодным для использования.   -  person the Tin Man    schedule 22.03.2013
comment
ruby tftp server может помочь вместе с исходным кодом для putbinary(remotefile, io) .   -  person the Tin Man    schedule 22.03.2013


Ответы (1)


Посмотрите этот проект:

https://github.com/spiceworks/net-tftp

Код должен ответить на ваши вопросы о том, как создавать последовательности байтов для связи с протоколом tftp.

person Michael Lang    schedule 21.03.2013