TftpSend (void)
pkt = NetTxPacket + NetEthHdrSize() + IP_HDR_SIZE;
case STATE_RRQ:
xp = pkt;
s = (ushort *)pkt;
*s++ = htons(TFTP_RRQ);
pkt = (uchar *)s;
strcpy ((char *)pkt, tftp_filename);
pkt += strlen(tftp_filename) + 1;
strcpy ((char *)pkt, "octet");
pkt += 5 /*strlen("octet")*/ + 1;
strcpy ((char *)pkt, "timeout");
pkt += 7 /*strlen("timeout")*/ + 1;
sprintf((char *)pkt, "%d", TIMEOUT);
pkt += strlen((char *)pkt) + 1;
len = pkt - xp;
break;
NetSendUDPPacket(NetServerEther, NetServerIP, TftpServerPort, TftpOurPort, len);
这个函数向tftp server发送一个packet
在上面的case中,在这个case中,设置一个即将发送的读数据请求报文:TFTP动作、tftp传输的文件名、模式“octet”、选项0“timeout”,选项0的值5.
tftp传输的文件名,模式“octet”,选项0“timeout”,选项0的值5之间有‘\0'.
. TftpHandler()
这个函数时tftp client的接收到数据时处理函数,处理数据包、OACK包、error包等。