2012-07-28 6 views
0

Я пишу TFTP-клиента с использованием C++. Я смог отправить запрос на чтение с использованием режима «октет» для клиента TFTP по умолчанию (tftpd32). Проблема в том, что я не могу отправить ACK обратно на регулярный ответ TFTP. Я получаю следующее сообщение об ошибке:TFTP C++ не получает ACK

Connection received from 127.0.0.1 on port 51401 [27/07 23:03:15.612] 
Read request for file <test.txt>. Mode octet [27/07 23:03:15.612] 
Using local port 51402 [27/07 23:03:15.612] 
Connection received from 127.0.0.1 on port 51401 [27/07 23:03:18.624] 
Unexpected request 4 from peer [27/07 23:03:18.624] 
Returning EBADOP to Peer [27/07 23:03:18.624] 

Почему я могу отправить RRQ, но не ACK, используя тот же метод?

+0

Используйте инструмент, как Wireshark, чтобы выяснить, что именно отправляется по проводам. Возможно, это облегчает обнаружение ошибки. – rve

ответ

0

Возможно, не совсем соответствующий ACK-пакет? Похоже, что вы посылаете запрос с ACK опкодом ...

Форма пакета ACK из RFC 1350:

    2 bytes  2 bytes 
       --------------------- 
       | Opcode | Block # | 
       --------------------- 

где опкод = 4

Смежные вопросы