问题标签 [tftp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
173 浏览

linux - 请求一个 IP 并从同一台机器上的另一个 IP 回复

我有一个拓扑,其中我的机器将 tftp 流量发送到一个 IP 地址上的 tftp 服务器 [linux 机器],并从另一个 IP 地址 [tftp 服务器上的 2 个 NIC] 接收回复,然后使用第二个 IP 地址进行整个传输。但我想知道如何配置这个规则[在 tftp 服务器上],当它回复时,它应该来自第二个IP 地址。

我需要配置什么样的规则是IP表吗?请假设路由是在 linux 机器上配置的。

0 投票
1 回答
1214 浏览

java - 无法使用 TFTPClient 发送文件(Apache Commons Net 库)

我正在尝试使用 Apache Commons Net 创建 TFTPClient 以将文件放在服务器(AIX OS)上,并且 TFTP 服务正在该服务器上运行,运行以下代码时没有引发任何异常,似乎一切正常,但是文件没有放在服务器上。

上述代码的输出是:

这意味着一切正常,但我没有在代码中指定的目录中找到该文件。

请指教。

0 投票
1 回答
10671 浏览

tftp - 超过 tftp 重试超时

我的问题是当我通过 TFTP 将内核映像下载到 Econa 处理器板(Econa 是基于 ARM 的处理器)时,重试次数超出,如下所示

以下是可以帮助您找到此错误原因的要点。

  1. Ping 响应正常

    /li>
  2. 当我尝试验证 TFTP 是否正在运行时,我尝试如下所示。似乎 TFTP 服务器正在工作。我放了一个小文件/tftpboot

    然后我做了本地主机

    /li>
  3. 请注意,我的机器上没有防火墙或 SELinux。

  4. 请验证这些文件的位置是否正常。我已将内核映像文件bootpImage.cns3420.uclibc放在/tftpbootTFTP服务文件中,位于/etc/xinetd.d/tftp.

  5. 我的 TFTP 服务文件是:

    /li>
  6. printenvU-boot 中的响应是:

    环境尺寸:437/4092 bytes

问候瓦卡斯

0 投票
1 回答
1444 浏览

c++ - UDP async_receive 的 boost::asio 错误

我遇到了来自 boost::asio 的奇怪错误的问题。我正在实现 TFTP 服务器的一半(仅限服务器-> 客户端)。我在第一个套接字上的端口 69 上获得第一个 RRQ 数据包,然后创建另一个套接字来执行 DATA、ACK 交换。我在该套接字上启动 async_receive(),然后对第一个数据包执行 send()。然后我得到接收的处理程序回调(我假设 ACK 进来),它给出了错误“无法建立连接,因为目标机器主动拒绝了它”,我从另一个线程理解这里意味着 ERROR_PORT_UNREACHABLE。

我真的不明白接收呼叫如何导致 UNREACHABLE 错误,因为我没有接触任何东西,我正在接收。我检查了 send() 的结果,那里没有错误。

我检查了套接字中的本地和远程端点(在错误之前和之后),它们都有正确的 IP 地址和端口。

有任何想法吗?我用谷歌搜索,找不到其他人有这个问题。大多数结果导致我使用stackoverflow,所以我在这里问。

编辑—— 我的问题是我正在使用调试器。当我开始发送第一个数据包时,客户端在大约一秒钟内发送了十几个请求后,客户端超时并放弃了,我的数据来不及了。当我在没有断点的情况下运行时,它工作正常。感谢大家的建议。正是观察 Wireshark 中的数据包给了我线索。

0 投票
2 回答
562 浏览

c++ - 在wireshark中查看时来自TFTP客户端的未知操作码

大家晚上好。

我在为使用 #include 的 C++ 分配创建 TFTP 客户端时遇到问题

我正在发送 char 缓冲区:

缓冲区={'0','2','f','i','l','e','n','a','m','e','0','o' ,'c','t','e','t','0'};

使用代码:

sendto(sock,buffer,strlen(buffer), 0, (sockaddr *) &serverAddr, sizeof(sockaddr));

但是当我在 WireShark 中查看此传输时,当我查看数据包的操作码部分时,它会显示“操作码:未知 (12338)”。即使它已经从字符串中选择了操作码

在此处输入图像描述

我完全被困住了,任何帮助将不胜感激。我很确定如果我可以发送和接收消息,我可以很容易地处理其余的。

只是在这里丢下我所做的,但标记的答案基本上是它 使用了来自 winsock2 的 BYTE(不知道我是否需要,但安全总比抱歉好)

缓冲区={(BYTE)0,(BYTE)2,'f','i','l','e','n','a','m','e',(BYTE)0, 'o','c','t','e','t',(BYTE)0};

sendto(sock,buffer,sizeof(buffer), 0, (sockaddr *) &serverAddr, sizeof(sockaddr));

0 投票
1 回答
1319 浏览

networking - “DHCP ...PXE E-53 未收到启动文件名”超时时间过长

我在 Linux Debian 下建立了一个 PXE-boot 网络。我为此使用了以下组件:

pxelinux, dhcp3, tftp-hpa

对于我网络中的每个客户端,我在 /etc/dhcp3/dhcpd.conf 中配置了一个主机声明。

在此主机声明中,他们将获得:静态 IP、网关、引导文件名“pxelinux.0”、dns-server

此配置完全有效。但是,当我希望客户端启动引导文件名时,我正在使用文件名选项配置此客户端的主机声明。当我不希望这个客户端启动文件名时,我将从它的主机声明中删除这一行。每次在 /etc/dhcp3/dhcp.conf 中编辑一行时,我都会重新启动 dhcp-server 以重新解析配置。

这也有效。但是当客户端在没有文件名选项的情况下启动时,它会努力搜索启动文件名(输出大约 30 秒:“DHCP.......”)并以 PXE E-53 退出:未收到启动文件名。

这是我完全不明白的。当这个客户端没有绑定到它的主机声明的文件名选项时,为什么要花这么长时间来搜索引导文件名?有没有办法告诉这个客户端不要搜索这个引导文件名?或者最终有没有办法将获取启动文件名的超时设置为小于 5 秒?在我的环境中,等待超过 1 分钟以启动一台主机绝对是浪费时间,这就是我问的原因。

谢谢!

0 投票
1 回答
138 浏览

header - 如何处理未知长度的标头(TFTP 相关)

它可能也与其他问题有关。我需要用 C 语言(仅八位组模式)构建一个简单的 TFTP 服务器,它可以与当今可用的大多数 TFTP 客户端一起使用(我只需要实现服务器)。

但我遇到了一个问题:RRQ/WRQ 数据包有一个未知的长度字段“文件名”(和“模式”)。因为我的服务器需要是通用的,我该如何实现这个选项?创建一个大得离谱的缓冲区并等到 recvfrom() 返回 0?

谢谢!

0 投票
1 回答
75 浏览

android - IP更改时端口会发生什么?

我在端口 8080 上运行了小型 TFTP 服务器。它是一个 Android 应用程序。当我在以太网上尝试连接它时,它可以无缝运行。但是,当我从以太网切换到 Wifi 时。我收到“连接拒绝”错误。或者有时它会显示第一页,然后当我尝试导航时,它会因同样的错误而崩溃。那么,如果IP发生变化,我需要做什么?我需要重新启动 TFTP 服务器吗?

谢谢

0 投票
1 回答
2305 浏览

c++ - tftp 客户端未从服务器接收(发送到错误的端口)

我正在编写自己的 TFTP 客户端。客户端是用 c++ 编写的(部分是 c),并在 unix 系统(Linux Debian stable)上运行。

这是我的问题:

我可以将我的读取请求 (RRQ) 发送到 TFTP 服务器(在 Windows XP 上打开 TFTP 服务器)。TFTP 服务器收到 RRQ,但不能发送应答。

在服务器端我看到这条消息:Client 192.168.1.110:55239 C:\OpenTFTPServer\test.txt, Communication Error

但是端口 55239 不是我在 TFTP-Client 中定义的端口。

这是我的代码部分:

  • 设置客户端和服务器地址:

    /li>
  • 连接和绑定:

    /li>
  • 创建 TFTP 请求:

    /li>
  • 发送 TFTP 请求:

    /li>

这是我的问题:

我在做什么错,TFTP 服务器接收到错误的端口?我认为它应该设置为 cliaddr.sin_port = htons(cliport);

感谢您的帮助和问候 Rico

回答:

我的问题是,我将错误的套接字与错误的地址结构组合在一起

这是我的工作代码部分:

  • 创建套接字:

    /li>
  • 设置客户端和服务器地址:

    /li>
  • 连接和绑定:

    /li>
  • 创建 TFTP 请求:

    /li>
  • 发送 TFTP 请求:

    /li>
  • 接收数据:

    /li>
0 投票
1 回答
164 浏览

c - 为什么无法使用 tftp 上传文件?

是否需要在多次迭代中每次上传文件时都建立连接以保持堆栈大小?

我得到了一个 calloc 失败的错误。

我正在使用带有多线程的freertos。