文件服务器超时,服务器端收不到ACK而超时终止文件传输

贴个我设置的

/* 69 is the port used for TFTP protocol initial transaction */

uint16_t port = 69;

/* Create a new UDP control block */

upcb = udp_new();

if(upcb != NULL)

{

/* assign destination IP address */

IP4_ADDR(&destIPaddr, DEST_IP_ADDR0, DEST_IP_ADDR1, DEST_IP_ADDR2, DEST_IP_ADDR3);

/* configure destination IP address and port */

err = udp_connect(upcb, &destIPaddr, port);

if(err == ERR_OK)

{

/* Set a receive callback for the upcb */

udp_recv(upcb, app_tftp_recv_callback, NULL);

//sprintf((char*)data, "sending udp client message %d", (int*)message_count);

pstr = &data[0];

message_count = 0;

*pstr++ = 0x00;

*pstr++ = TFTP_RRQ;                        //读报文

//*pstr++ = TFTP_WRQ;                //写报文

tm_strcpy(pstr, "999407.bin");

pstr += (strlen("999407.bin") + 1);

tm_strcpy(pstr, "octet");

pstr += (strlen("octet") + 1);

tm_strcpy(pstr, "blksize");

pstr += (strlen("blksize") + 1);

memset(buf, 0x00, sizeof(buf));

sprintf((char*)buf, "%d", 512);

tm_strcpy(pstr, buf);

pstr += (tm_strlen(buf) + 1);

tm_strcpy(pstr, "tsize");

message_count += strlen("tsize");

pstr += (strlen("tsize") + 1);

memset(buf, 0x00, sizeof(buf));

sprintf((char*)buf, "%d", 0);

tm_strcpy(pstr, buf);

pstr += (tm_strlen(buf) + 1);

message_count = pstr - &data[0];

/* allocate pbuf from pool */

p = pbuf_alloc(PBUF_TRANSPORT, message_count, PBUF_POOL);

if(p != NULL)

{

/* copy data to pbuf */

pbuf_take(p, (char*)data, message_count);

/* send udp data */

udp_send(upcb, p);

/* free pbuf */

pbuf_free(p);

}

else

{

}

}

else

{

}

}

else

{

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值