⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tftp.h

📁 s3c2410 wince bootload update tools
💻 H
字号:
// Tftp.h: interface for the CTftp class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_TFTP_H__A1523C0C_3FC7_41CB_B5D3_7A4949DC14C8__INCLUDED_)
#define AFX_TFTP_H__A1523C0C_3FC7_41CB_B5D3_7A4949DC14C8__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <stdio.h>
#include <winsock.h>
#include <conio.h>
#include <stdlib.h>

#define WSA_MAJOR_VERSION 1
#define WSA_MINOR_VERSION 1
#define WSA_VERSION MAKEWORD(WSA_MAJOR_VERSION, WSA_MINOR_VERSION)

// read/write request packet format
// 2 bytes     string    1 byte     string   1 byte
// ------------------------------------------------
// | Opcode |  Filename  |   0  |    Mode    |   0  |
// ------------------------------------------------
#define TFTP_RRQ 1   //Read request (RRQ)
#define TFTP_WRQ 2   //Write request (WRQ)

// DATA packet format
// 2 bytes     2 bytes      n bytes
// ----------------------------------
// | Opcode |   Block #  |   Data     |
// ----------------------------------
#define TFTP_DATA 3  //Data (DATA)

// ACK packet format
// 2 bytes     2 bytes
// ---------------------
// | Opcode |   Block #  |
// ---------------------
#define TFTP_ACK 4   //Acknowledgment (ACK)

// ERROR packet format
// 2 bytes     2 bytes      string    1 byte
// -----------------------------------------
// | Opcode |  ErrorCode |   ErrMsg   |   0  |
// -----------------------------------------
#define TFTP_ERROR 5 //Error (ERROR)

#define TFTP_NETASCII 0
#define TFTP_OCTET 1
#define TFTP_WSTAT_FIRSTACK 0
#define TFTP_WSTAT_NEXTACK 1
#define TFTP_WSTAT_LASTACK 2
#define MAX_RETRY 3
#define TFTP_NOTEND_DATALEN 512+2+2

#define TFTP_PORT_NUMBER	69

#pragma comment( lib, "Wsock32.lib" )

typedef enum 
{
	TFTP_NetAsii=0,
	TFTP_Octet=1,
}TFTPMODE;
typedef enum 
{
	TFTP_OK=0,
	TFTP_INIT_WINSOCK_ERROR=1,
	TFTP_FILE_NOEXITES_ERROR=2,
	TFTP_FILE_EXITES_ERROR=3,
	TFTP_FILE_READ_ERROR=4,
	TFTP_INPUT_FILE_ERROR=5,
	TFTP_WINSOCK_ERROR=6,
	TFTP_TIMEOUT_ERROR=7,
	TFTP_ACK_ERROR=8,
}TFTPERROR;

class CTftp  
{
public:
	CTftp();
	virtual ~CTftp();
public:
	UINT GetFile(char *filename);
	UINT PutFile(char *localfile,char *remotefile);
private:
//	int StrIPCmd(char *s,char cmd[][256]);
	int MakeReq(char type,int mode,char *filename,char *buffer);
	int MakeAck(unsigned short BlockNum,char *buffer);
	int MakeData(int num,char *data,int datasize,char *buffer);
private:
	BOOL InitSock(void);
	SOCKET Sock;
public:
	int FileMode;
	char DestHost[256];
	long ReviceSendBytes;
	CProgressCtrl *sb;
};

#endif // !defined(AFX_TFTP_H__A1523C0C_3FC7_41CB_B5D3_7A4949DC14C8__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -