资源简介
tftp客户端和服务器,用C语言开发的在Linux平台上的TFTP(RFC1350)服务器端和客户端. 支持目录列表, 可变块大小(RFC2348). 传输模式只支持二进制模式.
停止等待机制作为数据传输的基本机制, 是网络编程必须要掌握的技能. TFTP 协议使用基于UDP的停止等待机制来实现文件的可靠传输.
代码片段和文件信息
/**********************************************************
Date: NOV 28th 2006
Project : TFTP Client
Programers:
Jonathan Felske
Andrew Fullard
Craig Holmes
Reza Rahmanian
Adam Tomalty
File: TFTP Client (main)
Purpose: A TFTP client that will request a connections from
the server and transefet files.
Notes: Here we are using the sendto and recvfrom
functions so the server and client can exchange data.
***********************************************************/
#include “tftp.h“
/*a function to print the Help menu*/
void help (char *);
/*a function to create the request packet read or write*/
int req_packet (int opcode char *filename char *mode char buf[]);
/*a function to creat an ACK packet*/
int ack_packet (int block char buf[]);
/*a function to create the Error packets*/
int err_packet (int err_code char *err_msg char buf[]);
/*a function that will print the ip:port pair of the server or client plus data sent or recieved*/
void ip_port (struct sockaddr_in host);
/*a function to send a file to the server*/
void tsend (char *pFilename struct sockaddr_in server char *pMode
int sock);
/*a function to get a file from the server*/
void tget (char *pFilename struct sockaddr_in server char *pMode int sock);
/* default values which can be controlled by command line */
char path[64] = “/tmp/“;
int port = 69;
unsigned short int ackfreq = 1;
int datasize = 512;
int debug = 0 w_size = 1 p_length = 512;
int
main (int argc char **argv)
{
/*local variables */
extern char *optarg;
int sock server_len len opt; //n;
char opcode filename[196] mode[12] = “octet“;
struct hostent *host; /*for host information */
struct sockaddr_in server; // client; /*the address structure for both the server and client */
FILE *fp; /*a pointer to a file that the client will send or get from the server */
if (argc < 2)
{
help (argv[0]);
return 0;
}
if (!(host = gethostbyname (argv[1])))
{
perror (“Client could not get host address information“);
exit (2);
}
/* All of the following deals with command line switches */
while ((opt = getopt (argc argv “dnoh:P:p:g:l:w:“)) != -1) /* this function is handy */
{
switch (opt)
{
case ‘d‘: /* debug mode (no opts) */
debug = 1;
break;
case ‘P‘: /* Port (opt required) */
port = atoi (optarg);
if (debug)
{
printf (“Client: The port number is: %d\n“ port);
}
break;
case ‘p‘: /* put a file on the server */
strncpy (filename optarg sizeof (filename) - 1);
opcode = WRQ;
fp = fopen (filename “r“); /*opened the file for reading */
if (fp == NULL)
{
printf (“Client: file could not be opened\n“);
return 0;
}
if (debug)
{
printf (“Client: The file name is: %s and can be read“
filename);
}
fclose (fp);
break;
case ‘g‘: /*get a file from the server */
strncpy (filename optarg sizeof (filename) - 1);
opcode = RR
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-07-24 13:16 tftp-1.0\
文件 22760 2018-07-24 13:16 tftp-1.0\tftpd
文件 26824 2018-07-24 13:16 tftp-1.0\tftpc
文件 197 2006-12-18 04:24 tftp-1.0\Makefile
目录 0 2018-07-24 14:27 __MACOSX\
目录 0 2018-07-24 14:27 __MACOSX\tftp-1.0\
文件 232 2006-12-18 04:24 __MACOSX\tftp-1.0\._Makefile
文件 25001 2006-12-18 04:19 tftp-1.0\tftpd.c
文件 176 2006-12-18 04:19 __MACOSX\tftp-1.0\._tftpd.c
文件 1709 2006-12-18 04:19 tftp-1.0\tftp.h
文件 232 2006-12-18 04:19 __MACOSX\tftp-1.0\._tftp.h
文件 27920 2006-12-18 04:19 tftp-1.0\tftpc.c
文件 232 2006-12-18 04:19 __MACOSX\tftp-1.0\._tftpc.c
文件 176 2018-07-24 13:16 __MACOSX\._tftp-1.0
- 上一篇:c++常用库函数速查手册(中文)
- 下一篇:嵌入式C语言面试题汇总
相关资源
- 基于STM32F407的W5500 tcpserver(官网例程
- 高性能服务器代码(50_06th_server_thre
- C语言封装的HttpClient接口
- C++ sql2008 WebServer通讯.docx
- VC操作SQLSERVER数据库
- 一个简单而强大的基于MFC的web server源
- 基于C++和数据库SQL server开发的商品销
- 基于C++和SQL Server开发的商品销售管理
- 宾馆管理系统(C++MFC)数据库课程设
- c++和SqlServer做的图书管理系统
- Windows下基于ModbusTcp的Server端开发C语言
- DDE server VC++
- 网络编程HttpServer c++实现
- SQL server compact 3.5
- 基于C语言和SQL SERVER数据库实现的图书
- 进销存管理系统MFC SqlServer编程
- 服务端和客户端(MFC CSocket)
- IEC104规约Server及Client实现
- mfc配合listbox操作数据库
- C/C++使用ODBC操作SQL server数据库
- C/C++使用ODBC连接SQL server数据库完整流
- vnc-4_1_3-x86_linux.tar.gz
- Kepware OPCClient C++程序
- MFC ADO方法链接SQlServer数据库vc6实现
- 数据库课设SQL Server 2000 + Visual C++客户
- 简单易懂C++ WebServer接口开发源代码
- 最好用的OPC Server开发包OPCServer开发工
- MFC与SQL Server
- 数据库课程设计(教室管理信息系统
- FTP服务器MFC源码
评论
共有 条评论