tftpclient.h.txt

来自「linux下的tftp源代码,分为服务器端和连接客户端」· 文本 代码 · 共 79 行

TXT
79
字号
#include <sys/socket.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <string.h>

// packet opcode
#define RRQ_OPCODE		1
#define WRQ_OPCODE		2
#define DATA_OPCODE		3
#define ACK_OPCODE		4
#define ERROR_OPCODE	5

// mode value
#define ASCII			"netascii"
#define BIN				"octet"

// tftp state 
#define	CLOSED_STATE			0
#define SEND_DATA_STATE			1
#define RECV_DATA_STATE			2
#define WAITING_CLOSE_STATE		3
#define ERROR_STATE				4

struct RRQ {
	unsigned short		OpCode;
	char				FileName[80];
	char				Mode[10];
};

struct WRQ {
	unsigned short		OpCode;
	char		FileName[80];
	char		Mode[10];
};

struct DATA {
	unsigned short		OpCode;
	unsigned short		BlockNumber;
	char				Data[1];
};

struct ACK {
	unsigned short		OpCode;
	unsigned short		BlockNumber;
};

struct ERROR {
	unsigned short		OpCode;
	unsigned short		ErrorNumber;
	char				ErrorData[1];
};

struct CONTEXT {
	int				State;
	int				RecvNumber;
	int				SendNumber;
	int				CurrentByteSize;
	char			FileName[80];
	FILE			*fp;
};


int process_ACK(int socket, char *msg, int recvsize, 
		struct sockaddr_in *clientaddr, int clientaddrsize);

int process_DATA(int socket, char *msg, int recvsize, 
		struct sockaddr_in *clientaddr, int clientaddrsize);

int process_ERROR(int socket, char *msg, int recvsize, 
		struct sockaddr_in *clientaddr, int clientaddrsize);

int send_error(int socket, struct sockaddr_in *clientaddr, int clientaddrsize, 
			unsigned short errorcode, char *errormsg);

⌨️ 快捷键说明

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