gpt4 book ai didi

c - TFTP 客户端(基于 ENET)无法连接到远程 TFTP 服务器

转载 作者:行者123 更新时间:2023-11-30 15:19:33 25 4
gpt4 key购买 nike

我正在尝试用 C 语言(Windows、Visual Studio 2005)实现 TFTP 客户端。

TFTP 客户端应该连接到端口 69 上的远程 TFTP 服务器地址。

TFTP 客户端正在使用 ENET API 进行网络连接,但我无法让它工作。

TFTP 客户端永远不会切换到“CONNECTED”状态,而是停留在“CONNECTING”状态。

当我在 Windows 7 上运行 native Windows TFTP 客户端(cmd、Windows 控制台)时,连接到 TFTP 服务器没有问题,我可以毫无问题地检索远程文件。

所以我一定在下面的代码中做错了什么,我希望有人可以告诉我我做错了什么:

#include "enet.h"
#include <stdlib.h>
#include <stdio.h>

#pragma comment(lib, "Winmm.lib")
#pragma comment(lib, "Ws2_32.lib")

void main(void)
{
ENetAddress address;
ENetEvent thisEvent;
ENetPeer *peer;
ENetHost* client;
int rc;

memset(&thisEvent,0,sizeof(ENetEvent));

rc = enet_initialize ();

/* Create a TFTP client */
client = enet_host_create(NULL, 1,1,0,0);

/* Address and port of remote TFTP server */
rc = enet_address_set_host (& address, "192.168.30.50");
address.port = 69;

/* Connect client to server */
peer = enet_host_connect (client, & address, 1, 0);

while (1)
{
printf("State = %d | Event Type = %d\n", peer->state, thisEvent.type);
enet_host_service (client, &thisEvent, 1000);
}
}

最佳答案

来自documentation看起来这个“ENet”库并不适用于普通的 UDP 通信。相反,它实现了“基于 UDP 的单一统一协议(protocol)”。这不是 TFTP 协议(protocol),因此您的客户端与标准 TFTP 服务器不兼容。

改用普通套接字。

关于c - TFTP 客户端(基于 ENET)无法连接到远程 TFTP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30607474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com