TFTP C ++没有收到ACK

时间:2012-07-28 06:12:02

标签: c++ udp client tftp

我正在使用C ++编写TFTP客户端。我能够使用“八位字节”模式向默认TFTP客户端(tftpd32)发送读取请求。问题是我无法在常规TFTP响应时发回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?

1 个答案:

答案 0 :(得分:0)

可能是一个不完全一致的ACK数据包? 看起来您正在发送带有ACK操作码的请求......

来自RFC 1350的ACK数据包的形式:

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

其中opcode = 4