贴个我设置的
/* 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
{
} |