简述简单文件传送协议.docVIP

  • 11
  • 0
  • 约9.53千字
  • 约 20页
  • 2017-05-03 发布于贵州
  • 举报
简述简单文件传送协议

PAGE  PAGE 20 简述简单文件传送协议 篇一:文件传输协议的简单设计与实现 要求:用socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c),该程序应能实现下述命令功能: get:取远方的一个文件 put:传给远方一个文件 pwd:显示远主当前目录 dir:列出远方当前目录 cd :改变远方当前目录 ? :显示你提供的命令 quit :退出返回 注意事项:这此命令的具体工作方式(指给出结果的形式)可以参照FTP 的相应命令,有余力的同学可以多实现几个命令。 使用Socket进行Client/Server程序设计的一般连接过程是这样的:Server端Listen(监听)某个端口是否有连接请求,Client端向Server端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息。一个连接就建立起来了。Server端和Client端都可以通过Send,Write等方法与对方通信。 对于一个功能齐全的Socket,都要包含以下基本结构,其工作过程包含以下四个基本的步骤: (1) 创建Socket; (2) 打开连接到Socket的输入/出流; (3) 按照一定的协议对Socket进行读/写操作; (4) 关闭Socket. 下面是源代码: /****************client.c****************/ #include lt;winsock2.h #include lt;stdio.h #include lt;stdlib.h #pragma comment(lib,ws2_32.lib) #define DEFAULT_PORT 2302 #define DEFAULT_BUFFER2048 #define DEFAULT_MESSAGE This is a test of the emergency \ broadcasting system char szServerip[128], // Server to connect to szMessage[1024]; // Message to send to sever intiPort = DEFAULT_PORT; // Port on server to connect to //DWORD dwCount= DEFAULT_COUNT; // Number of times to send message BOOL bSendOnly = FALSE;// Send data only; don#39;t receive int dirfun(); int getfun(); int putfun(); int pwdfun(); int cdfun(); int mdfun(); int delfun(); int usafun(); void usage() { printf(usage: client [-p:x] [-s:IP] [-n:x] [-o]\n\n); printf( -p:xRemote port to send to\n); printf( -s:IP Server#39;s IP address or hostname\n); printf( -n:xNumber of times to send message\n); printf( -o Send messages only; don#39;t receive\n); ExitProcess(1); } void ValidateArgs(int argc, char **argv) { int i; for(i = 1; i lt; argc; i++) { if ((argv[i][0] == #39;-#39;) || (argv[i][0] == #39;/#39;)) { switch (tolower(argv[i][1])) { case #39;p#39;: // Remote port if (strlen(argv[i]) 3) iPort = atoi(amp;argv[i][3]); break; case #39;s#39;: // Server if (strlen(argv[i]) 3) strcpy(szServerip, amp;argv[i][3]); break; case #39;n#39;: // Number of times to send message if (strlen(argv[i]) 3) //dwCount = atol(amp;argv[i][3]); break; case #3

文档评论(0)

1亿VIP精品文档

相关文档