Error:Can't bind the tftp port! 解决办法


用tftpd32..exe时把setting里的东西改了,再打开时出现如下错误:
Can't bind the tftp port! Either you do not have necessary privilege or a tftp daemon is already started
解决办法其实很简单:
只要在运行里输入regedit,打开注册表,
HKEY_LOCAL_MACHINE -> SOFTWARE  -> TFTPD32  ,把这个TFTPD32整个文件夹删了。
再去打开tftpd32.exe就正常了.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
首先,您需要使用FreeRTOS中的任务来实现并发处理。您可以创建一个任务来处理TFTP请求,然后在任务中使用您的现有函数来实现TFTP服务器。 例如,您可以创建一个名为tftp_task的任务,该任务将在启动时创建一个UDP套接字,并在循环中等待接收来自客户端的TFTP请求。在接收到请求后,该任务将启动一个新的任务来处理该请求,并等待下一个请求。 以下是一个示例代码框架: ``` // TFTP task void tftp_task(void *pvParameters) { struct udp_pcb *pcb; // create UDP socket pcb = udp_new(); // bind socket to port 69 udp_bind(pcb, IP_ADDR_ANY, 69); while(1) { struct pbuf *p; ip_addr_t addr; u16_t port; // wait for incoming packet p = udp_recv(pcb, recv, NULL); // get client address and port addr = *(ip_addr_t *)p->payload; port = *((u16_t *)p->payload + 2); // create new task to handle request xTaskCreate(tftp_request_task, "tftp_request_task", configMINIMAL_STACK_SIZE, (void *)&addr, tskIDLE_PRIORITY + 1, NULL); // free packet buffer pbuf_free(p); } } // TFTP request task void tftp_request_task(void *pvParameters) { ip_addr_t *addr = (ip_addr_t *)pvParameters; // handle TFTP request using existing functions // e.g. send_error(), send_ack(), send_data(), etc. // use mutex/semaphore to synchronize access to shared resources // e.g. file system, memory, etc. } // TFTP timer task void tftp_tmr_task(void *pvParameters) { while(1) { // handle TFTP timer events using existing tftp_tmr() function tftp_tmr(NULL); // delay for 100ms vTaskDelay(pdMS_TO_TICKS(100)); } } // TFTP server initialization err_t tftp_init(const struct tftp_context *ctx) { // create TFTP task xTaskCreate(tftp_task, "tftp_task", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 1, NULL); // create TFTP timer task xTaskCreate(tftp_tmr_task, "tftp_tmr_task", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 2, NULL); return ERR_OK; } ``` 请注意,上述代码框架仅供参考,您需要根据自己的实际情况进行调整和修改。 在处理TFTP请求时,请确保使用互斥锁或信号量来同步访问共享资源,例如文件系统或内存。这可以防止多个任务同时访问同一资源而导致数据损坏或不一致。 同时,请注意在处理TFTP请求时要处理错误情况,例如超时、丢失的数据包、非法请求等。这可以通过调用send_error()函数来实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值