首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TFTP客户端(基于ENET)无法连接到远程TFTP服务器

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

Stack Overflow用户
提问于 2015-06-03 06:09:07
回答 1查看 279关注 0票数 0

我正在尝试用C (Windows,Visual Studio2005)实现一个TFTP客户端。

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

TFTP客户端正在使用ENET API进行网络方面的工作,但我无法使其正常工作。

TFTP客户端永远不会切换到“已连接”状态,并停留在“正在连接”状态。

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

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

代码语言:javascript
复制
#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);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2015-06-03 06:18:04

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

改用普通套接字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30607474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档