2012-07-28 88 views
0

我在寫一個使用C++的TFTP客戶端。我能夠使用「octet」模式將讀取請求發送到默認的TFTP客戶端(tftpd32)。問題是我無法在常規的TFTP響應中發回ACK。我收到以下錯誤: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來找出什麼是beeing通過電線發送。也許這可以更容易地發現錯誤。 – rve 2012-08-25 09:56:44

回答

0

可能是一個沒有很好符合的ACK數據包? 它看起來像您發送一個ACK操作碼的請求......

的ACK信息包從RFC 1350的形式:

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

其中操作碼= 4