資源簡介
linux下的簡單文件服務器和客戶端程序

代碼片段和文件信息
#include?
#include?
#include “unp.h“
void?ftp_cli(FILE?*fp?int?sockfd);
int?main(int?argc?char?**argv)
{
int sockfd;
struct?sockaddr_in servaddr;
if?(argc?!=?2)? err_quit(“usage:?tcpcli?“);
sockfd?=?Socket(AF_INET?SOCK_STREAM?0);
bzero(&servaddr?sizeof(servaddr));
servaddr.sin_family?=?AF_INET;
servaddr.sin_port?=?htons(21000);
Inet_pton(AF_INET?argv[1]?&servaddr.sin_addr);
Connect(sockfd?(SA?*)?&servaddr?sizeof(servaddr));
ftp_cli(stdin?sockfd); /*?do?it?all?*/
exit(0);
}
void?ftp_cli(FILE?*fp?int?sockfd)
{
char?sendline[MAXLINE]?recvline[MAXLINE];
char?cmd?[MAXLINE];
char?wdpath[200];
if(getcwd(wdpath200)==NULL)return?;
strcat(wdpath“/user“);
for?(?;?;?)
{
????fprintf(stderr?“myftpclient-->“);
????????if?(Fgets(sendline?MAXLINE?fp)?==?NULL)?return;
else?fputs(sendlinestdout);
strcpy(cmdsendline);
//int?i;
//for(i=0;i //fprintf(stderr“%d\n“(int)(sendline[i]));
char?*?pcmd=strtok(cmd“?\n“);
if(strcmp(pcmd“dir“)==0||strcmp(pcmd“ls“)==0)
{
????????????Writen(sockfd?sendline?strlen(sendline));
????if?(Readline(sockfd?recvline?MAXLINE)?==?0)
err_quit(“str_cli:?server?terminated?prematurely“);
????????????int?lines=atoi(recvline);
????????????int?i;
for(i=0;i {
????Readline(sockfd?recvline?MAXLINE);
????fprintf(stderrrecvline);
}
????????}
????????else?if(strcmp(pcmd“get“)==0)
{
????????????Writen(sockfd?sendline?strlen(sendline));
????if?(Readline(sockfd?recvline?MAXLINE)?==?0)
err_quit(“str_cli:?server?terminated?prematurely“);
????????????int?bytes=atoi(recvline);
????????????fprintf(stderr?“file?length?=?%d.\n“bytes);
????????????int?left=bytes;
????????????FILE?*fp=0;
????????????if(left>0)
????????????{
????????????????char?filename[100];
????????????????strcpy(filenamewdpath);
????????????????strcat(filename“/“);
????????????????strcat(filename?strtok(NULL“?\n“));
????????????????if((fp=fopen(filename“wb“))==NULL)
????????????????{
????????????????????fprintf(stderr“failed?open?file?%s“filename);
????????????????????return;
????????????????}
????????????????fprintf(stderr?“file?create:?%s.\n“filename);
????????????}
????????????while(left>MAXLINE)
????????????{
????????????????Readn(sockfd?recvline?MAXLINE);
????????????????left-=MAXLINE;
????????????????fwrite(recvlineMAXLINE1fp);
????????????}
????????????if(left<=MAXLINE)
????????????{
????????????????Readn(sockfd?recvline?left);
????//fprintf(stderrrecvline);
????fwrite(recvlineleft1fp);
????????????}
????????????fprintf(stderr?“file?writen?done.\n“);
????????????fclose(fp);
????????}
????????else?if(strcmp(pcmd“quit“)==0)
{
????fprintf(stderr?“See?you!.\n“);
????return;
}
else
fprintf(stderr?“usage:cmd?[args].\ncmd=\tdir\tls\tget\tquit\n“);
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-05-07?21:23??myftp\
?????文件????????2870??2011-04-20?20:33??myftp\client.c
?????目錄???????????0??2016-05-07?20:43??myftp\ftpc\
?????目錄???????????0??2016-05-05?16:14??myftp\ftpc\bin\
?????目錄???????????0??2016-05-05?16:14??myftp\ftpc\bin\Debug\
?????文件???????54113??2011-04-13?23:58??myftp\ftpc\bin\Debug\ftpc
?????文件????????5228??2016-05-07?20:42??myftp\ftpc\client.c
?????文件????????4566??2016-05-07?20:06??myftp\ftpc\client.c~
?????文件???????13996??2016-05-07?20:43??myftp\ftpc\client.o
?????文件????????9119??2009-10-21?15:25??myftp\ftpc\config.h
?????文件???????58258??2016-05-07?20:43??myftp\ftpc\ftpc
?????文件????????1201??2011-04-14?22:37??myftp\ftpc\ftpc.cbp
?????文件?????????241??2011-04-15?11:16??myftp\ftpc\ftpc.layout
?????文件??????392824??2009-10-21?15:28??myftp\ftpc\libunp.a
?????文件????????1251??2011-04-13?23:22??myftp\ftpc\main.c~
?????文件?????????293??2011-04-14?16:45??myftp\ftpc\makefile
?????文件?????????289??2011-04-13?22:45??myftp\ftpc\makefile~
?????目錄???????????0??2016-05-05?16:14??myftp\ftpc\obj\
?????目錄???????????0??2016-05-05?16:14??myftp\ftpc\obj\Debug\
?????文件????????6036??2011-04-13?23:58??myftp\ftpc\obj\Debug\main.o
?????文件???????16734??2009-10-28?17:27??myftp\ftpc\unp.h
?????目錄???????????0??2016-05-07?20:08??myftp\ftpc\user\
?????文件?????????180??2016-05-04?09:51??myftp\ftpc\user\code.c
?????文件??????????38??2016-05-07?20:02??myftp\ftpc\user\ex.c
?????文件???????53248??2016-05-07?15:26??myftp\ftpc\user\ftps
?????文件?????????200??2016-05-07?19:23??myftp\ftpc\user\id1.c
?????文件????????9212??2016-05-07?15:25??myftp\ftpc\user\main.o
?????文件?????????293??2016-05-07?15:26??myftp\ftpc\user\makefile
?????目錄???????????0??2016-05-07?20:43??myftp\ftps\
?????目錄???????????0??2016-05-05?16:14??myftp\ftps\bin\
?????目錄???????????0??2016-05-05?16:14??myftp\ftps\bin\Debug\
............此處省略26個文件信息
- 上一篇:51單片機頻率計設計
- 下一篇:Servlet API chm文檔
評論
共有 條評論