• 大小: 33KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-06-18
  • 语言: C/C++
  • 标签: tftp  client  server  udp  

资源简介

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

评论

共有 条评论