TFTP服务器代码

上传人:博****1 文档编号:473356950 上传时间:2023-11-21 格式:DOCX 页数:25 大小:14.32KB
返回 下载 相关 举报
TFTP服务器代码_第1页
第1页 / 共25页
TFTP服务器代码_第2页
第2页 / 共25页
TFTP服务器代码_第3页
第3页 / 共25页
TFTP服务器代码_第4页
第4页 / 共25页
TFTP服务器代码_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《TFTP服务器代码》由会员分享,可在线阅读,更多相关《TFTP服务器代码(25页珍藏版)》请在金锄头文库上搜索。

1、#define _VC#include #include #include #include #include #ifndef MAKEWORD#define MAKEWORD(l,h) (WORD)(BYTE)(l)|(WORD)(BYTE)(h)8)#endif#define WSA_MAJOR_VERSION 1#define WSA_MINOR_VERSION 1#define WSA_VERSION MAKEWORD(WSA_MAJOR_VERSION, WSA_MINOR_VERSION)/* read/write request packet format2 bytes stri

2、ng 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 format2 bytes 2 bytes n bytes-| Opcode | block # | Data |-*/#define TFTP_DATA 3 /*Data (DA TA)*/* ACK packet format2 bytes 2 bytes-| Opcode

3、 | block # |-*/#define TFTP_ACK 4 /*Acknowledgment (ACK)*/*ERROR packet format2 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_WSTA T_FIRSTACKE 0#define TFTP_WSTA T_NEXTACK 1#define TFTP_

4、WSTA T_LASTACK 2#define MAX_RETRY 3#define TFTP_NOTEND_DATALEN 512+2+2#ifdef _VC#pragma comment(lib,Wsock32.lib)#endif/*typedef void (* CMDFUNC)(char 256,int pcout);typedef struct _cmdnumchar *cmd;int num;int paramcount;CMDFUNC callback;CMDNUM,*PCMDNUM;*/typedef struct DATAint socknum;char *filename

5、;unsigned short remoteport;char *remoteaddr;DA TA passdata6;ofstream logfile(log.txt,ios:app);int makeack(unsigned short num,char *buffer,int size);void showsysinfo();void getfile(DATA *needdata);void putfile(DATA *needdata);int makeerror(int errcode,char errstring256,char *buffer,int bufsize);SOCKE

6、Tsock6=INV ALID_SOCKET,INV ALID_SOCKET,INV ALID_SOCKET,INV ALID_SOCKET,IN V ALID_SOCKET,INV ALID_SOCKET;int filemode =TFTP_OCTET;#define MYPORT 69void main(int argc,char *argv)WSADATA stWSAData;int ret=0;sockaddr_in addr;char recvbuf1024=0;char sendbuf1024=0;sockaddr_in from;sockaddr_in newaddr;int

7、fromlen=0;char filename256;int i,len;DWORD ThreadID6;showsysinfo();if(WSAStartup(WSA_VERSION,&stWSAData)!=0)printf(cant start socket rn);exit(0);if (sock0=socket(AF_INET,SOCK_DGRAM,0)0)perror(socket);exit(1);addr.sin_family=AF_INET;addr.sin_port=htons(MYPORT);addr.sin_addr.s_addr=INADDR_ANY;memset(&

8、(addr.sin_zero),0,8);if (bind(sock0,(struct sockaddr *)&addr,sizeof(struct sockaddr)0) perror(bind);exit(1);for (;)fromlen=sizeof(from);recvfrom(sock0,recvbuf,sizeof(recvbuf),0,(sockaddr*)&from,&fromlen);if (recvbuf0=0 & recvbuf10)for (i=0;i+)filenamei=recvbufi+2;if (filenamei=0) break;for (i=1;i=5;

9、i+) if (socki=INV ALID_SOCKET) passdatai.socknum=i;if (socki=socket(AF_INET,SOCK_DGRAM,0)0)perror(socket);exit(1);newaddr.sin_family=AF_INET;newaddr.sin_port=0;newaddr.sin_addr.s_addr=INADDR_ANY;memset(&(newaddr.sin_zero),0,8);if (bind(socki,(struct sockaddr *)&newaddr,sizeof(struct sockaddr)0)perro

10、r(bind);exit(1);break;passdatai.filename=filename;passdatai.remoteport=ntohs(from.sin_port);passdatai.remoteaddr=inet_ntoa(from.sin_addr);if (recvbuf1=TFTP_WRQ)CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)getfile,&passdatai,0, &ThreadIDi);if (recvbuf1=TFTP_RRQ)CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)putfile,&passdatai,0, &ThreadIDi); else len=makeerror(4,llegal TFTP oper

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号