ftp客户端和服务器源代码(c语言)实现

上传人:第*** 文档编号:31774359 上传时间:2018-02-09 格式:DOC 页数:26 大小:113.50KB
返回 下载 相关 举报
ftp客户端和服务器源代码(c语言)实现_第1页
第1页 / 共26页
ftp客户端和服务器源代码(c语言)实现_第2页
第2页 / 共26页
ftp客户端和服务器源代码(c语言)实现_第3页
第3页 / 共26页
ftp客户端和服务器源代码(c语言)实现_第4页
第4页 / 共26页
ftp客户端和服务器源代码(c语言)实现_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《ftp客户端和服务器源代码(c语言)实现》由会员分享,可在线阅读,更多相关《ftp客户端和服务器源代码(c语言)实现(26页珍藏版)》请在金锄头文库上搜索。

1、课程设计: FTP 的设计与实现/*client.c*/#include #include #include #pragma comment(lib,ws2_32.lib)#define DEFAULT_PORT 2302#define DEFAULT_BUFFER 2048#define DEFAULT_MESSAGE This is a test of the emergency broadcasting systemchar szServerip128, / Server to connect toszMessage1024; / Message to send to severint

2、iPort = DEFAULT_PORT; / Port on server to connect to/DWORD dwCount = DEFAULT_COUNT; / Number of times to send messageBOOL bSendOnly = FALSE; / Send data only; dont receiveint dirfun();int getfun();int putfun();int pwdfun();int cdfun();int mdfun();int delfun();int usafun();void usage()printf(usage: c

3、lient -p:x -s:IP -n:x -onn);printf( -p:x Remote port to send ton);printf( -s:IP Servers IP address or hostnamen);printf( -n:x Number of times to send messagen);printf( -o Send messages only; dont receiven);ExitProcess(1);void ValidateArgs(int argc, char *argv)int i;for(i = 1; i 3)iPort = atoi(break;

4、case s: / Serverif (strlen(argvi) 3)strcpy(szServerip, break;case n: / Number of times to send messageif (strlen(argvi) 3)/dwCount = atol(break;case o: / Only send message; dont receivebSendOnly = TRUE;break;default:usage();break;int main(int argc, char *argv)WSADATA wsd;SOCKET sClient;char szBuffer

5、DEFAULT_BUFFER;int ret;/unsigned int i;/int j;struct sockaddr_in server;struct hostent *host = NULL;char choice5,choice240;/ Parse the command line and load Winsock/argv1=-s:127.0.0.1;strcpy(szServerip, /ValidateArgs(argc, argv);if (WSAStartup(MAKEWORD(2,2), &wsd) != 0)printf(Failed to load Winsock

6、library!n);return 1;/strcpy(szMessage, DEFAULT_MESSAGE); / Create the socket, and attempt to connect to the server/sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (sClient = INVALID_SOCKET)printf(socket() failed: %dn, WSAGetLastError();return 1;server.sin_family = AF_INET;server.sin_port = ht

7、ons(iPort);printf(server.sin_port=%un,server.sin_port);server.sin_addr.s_addr = inet_addr(szServerip);/ If the supplied server address wasnt in the form/ aaa.bbb.ccc.ddd its a hostname, so try to resolve it/if (server.sin_addr.s_addr = INADDR_NONE)host = gethostbyname(szServerip);if (host = NULL)pri

8、ntf(Unable to resolve server: %sn, szServerip);return 1;CopyMemory(&server.sin_addr, host-h_addr_list0,host-h_length);if (connect(sClient, (struct sockaddr *)&server, sizeof(server) = SOCKET_ERROR)printf(connect() failed: %dn, WSAGetLastError();return 1;/显示接通信息/for(j=0;j );scanf(%s, choice);if(strnc

9、mp(choice,dir,3)=0|strncmp(choice,DIR,2)=0)dirfun(sClient);continue; else if(strncmp(choice,pwd,3)=0|strncmp(choice,PWD,3)=0)pwdfun(sClient);continue;else if(strncmp(choice,?,1)=0)usafun(sClient);continue; else if(strncmp(choice,quit,4)=0|strncmp(choice,QUIT,2)=0)break;scanf(%s, choice2);if(strncmp(

10、choice,get,3)=0|strncmp(choice,GET,3)=0)getfun(sClient,choice2);continue;else if(strncmp(choice,put,3)=0|strncmp(choice,PUT,3)=0)putfun(sClient,choice2);continue;else if(strncmp(choice,cd,2)=0|strncmp(choice,CD,2)=0)cdfun(sClient,choice2);continue;else if(strncmp(choice,md,2)=0|strncmp(choice,MD,2)=

11、0)mdfun(sClient,choice2);continue;else if(strncmp(choice,del,3)=0|strncmp(choice,DEL,3)=0)delfun(sClient,choice2);continue;/elseputs(输入错误,请重新输入);fflush(stdin);fflush(stdin);printf(n); printf(n);closesocket(sClient);WSACleanup(); return 0;int dirfun(SOCKET sClient)int ret;char *MSG=dir$;char szBuffer

12、80;strcpy(szMessage, MSG);ret = send(sClient, szMessage, strlen(szMessage), 0);if (ret = 0)return 1;else if (ret = SOCKET_ERROR)printf(send() failed: %dn, WSAGetLastError();return 1;/printf(Send %d bytesn, ret);/printf(bSendOnly=%dn,bSendOnly);while(!bSendOnly)/读取流并显示 /ret = recv(sClient, szBuffer,

13、80, 0);/printf(%s,szBuffer);ret = recv(sClient, szBuffer, 80, 0);if (ret = 0) / Graceful closereturn 1;else if (ret = SOCKET_ERROR)printf(recv() failed: %dn, WSAGetLastError();return 1;szBufferret = 0;if(strncmp(szBuffer,226 Close,strlen(226 Close)=0)break;printf(%s,szBuffer);if(strncmp(szBuffer,500

14、 Syntax error,strlen(500 Syntax error)=0)break; return 0;int getfun(SOCKET sClient,char filename40)int ret;FILE *fpre;char szBuffer80; szMessage0=0;strcat(szMessage, get$);/strcat(szMessage, );strcat(szMessage,filename);/printf(MSG4=%cn,szMessage4);/szMessage0=g;szMessage1=e;szMessage2=t;/szMessage4=m;szMessage5=e;szMessage6=.;szMessage7=t;/szMessage8=x;szMessage9=t;szMessage10=0;ret = send(sClient, szMessage, strlen(szMessage)+1, 0);if (ret = 0)return 1;e

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 工业设计

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