显示ftp客户端和服务器源代码c语言实现要点

ftp服务器地址  时间:2021-01-30  阅读:()

课程设计 F TP的设计与实现

/*******  *****************/

include<winsock2 h>

#nlue < tdio >

in ude <s  l b h>

#pragma commen (lib,"ws2_32 lib )

#define DFAULT_T 2302

#define DEFAUL_BUFFER    

#defne EFAULMESGE "Th s i  a test o  the erge y \ boadcast  g  ste"

 ar szerveri[128 , //Srer t cnnec   szMe  sage[1 24]  //Messae    nd to severin iPo t = FAULT_ORT;/Port on serer to  nnect to

/WRD dCount =DEALT_CONT /Numbe  of times to se  me  sgeBObSndnly =FASE /S   data ony;don't reeiveint di fun  ;int ge  fun();int putfn();

nt w  n );int cf () int mdfun();int delfun();in usa u );vi usae()

{printf "usag: c   ent [-p:] [-  :IP n:x] [o]  );pr ntf(  -p x Remot po t     d  n");pritf();

rintf );pr  tf(" - Snd ms  ges ny;don't re  ve\n");

ExitProcess(1);

}

oi Val dateAg ( nt arc, car**argv)

{

 t i;fo (i= 1;i<argc; i+

{i  ((argv i][]= '-  ) | | (rv[i] 0]==''))

{

witch (  lw  a gv[i [1])

{cse

 f(s  rl e(a    i])> 3)

Prt=aoi(&arg[i][3] i  (st   n(arg[i )> 3)strcp(   e ver p,&argv[i][]);ca i  (s  rl en(argv[i] >3)

//dwC nt= tol(&argv[i [3]);

abSedOl TREbrakdefau t:u age( ;break;

}

}

}

}int ma n  n a gc

{

WSADATA ws;

C KT Cli t;cha  sBufer[DEFULT_BUFE R];

nt ret;

//usin e nt  ;

//it j struct socaddr_in srerstrc  ostent *hst= NUL;cha  choice[]  choic2[40 ;

//Prse te comman li  ad oad Winok

/a gv 1]="s 127  0  ";strcy(  zServerip,&rv[1][3]);

//Vlidatergs ar , a gv);if(WSAS  artu(KEWD(2 2  &wd)  =0)

pritf("ai  ed to loainsok libra y!\");

 etrn 1;

}

strcpy(  Me  sage, DFULT_MSAGE);

//

/ rea e th ocket, nd atte  o connet to h se  er//

Client= socke  (AFIT,S OC_STREAM IRT O_TCP ;if s  ient =INVALIOC KE)

{

rintf("socet ) faile:%d\n" AG astrror( ;

 eturn  ;

}serer  n_fmil =AFINET;

 erer  inprt=hons(  ort);p ntf(;server s n_add addr=int_ad(s ervri) 

/

/If the supplied  erver address wasn't in th f m

//if(  erver s  _addr s_ddr==INAD_NONE)

ho t= e hostbynae s erv ip);

 f(host==NLL)

{

rintf(;return 1;

CopyMemo  & erver  in_add ,host->_adr  st 0],ho t->h_len h);

}if (con   (sCl  en, (struct sockaddr )srersizef(     r ) == SOET_ERROR)

{pr ntf("onnect ) fa  led %d  ,WSAGe Lastr or ));retur 1;

}

//显示接通信息

//

//

//for(j=0 j<;j++)

//

{ret=rec(slin , szBfer DEFAUTBUFFER,  ;i  ret0) //Grcful clo er un0;

lse if(  et == SOCKET_EOR)

p n f(  rec()  i  d:%\n" WSAtLstEr or( ;r e trn ;

szBuffe  [  t] '\0';pri   ("%s\  ,szBufer);if(ret<1  

{

 et   cv( Client, zuff   DFAULT_UR,0) if(ret =0) // racef  lose

 etur 0e   e if (ret= OCKETERO)

{

/printf("recv() fa   ed:%dn  SGe Las Er or ));retrn  

}szB fer ret '0';

rin  "s\n",szBuffer);

}

/printf("DEAULUFFE=%\  ,DEFA_BUFFE);

}whi l e 1

{puts("------------------------");prin  ("ft>   ;scan ("   ch  ce);if(strcm hic,  i ",3)==0| | tr m(h  ce,"D ,2)=0){dirfun(sClient ;contine

}el se   st ncmp choi c e,"pd",3 =0| |  tr mp(c i ,"PWD" 3)=0{pwdfun s   e );

 ntine;

}e   e if(st ncmp(cho ce,   " )=0)

{u fun( Cliet) 

con iu;

}

l     (st ncm(hi c e,"qu t",4 ==  | st nmp(choie "QUI",2)==0){

reak;

}s nf  ;i f(st ncmp(c i c e,"get",3 =0  |   rncmp(c i c,"GET" 3)==0)

{g  fun(sC  nt,choic );con inue;

}

lse if(strncp(choic,"pt  ,3)==0| | s  ncp(choie "PUT",3 ==)

{put u(sClien ,ch   2 ;cntinue;

e   e if(strncm( oice " ",)==0| | st  cmp(c ice, CD" 2)==)cdfun( Clint,ho c2 co  iue;

}e  s i    trnc( oie,"m",)= | |  trcmp(coi c e, D" 2 =0){mdfun( Cl  en  coie2 ;continue;

}e  se if(str mp(co ce,"del" 3)= | | trncmp(h  e "DL",)==0){delfun sClient choice  cotiue;

   e

uts("输入错误请重新输入 );

flu sh s di);fflsh(s   n) printf "\");pri  f   \n") 

}c ose  c t(sCl  et ;

WSAlanup();retur ;

n d rfun(OCKET sCl  ent)

in re  ;cha  *MG="di  ";char sfer[ ];s  rcpy(sMssage, MG);ret= send( Clint ;if(rt= 0)return  ;e   e if(rt==SCKE_EROR

rintf("send() fa  l :%d\n", WSGetLatErrr()) retun  ;

}

//printf "Se  d    s\n , ret);

//rin f("bSendOnl%d\n",S endOnly);while(!bS endOnly)

/读取流并显示

//  e  = recv(sl  nt, zuffer,8, 0);

//p ntf("%s", zBuffe );

 e  =recv(sC ient, szBuff  ,8, ) if ret ==0 // acefu lsreturn 1 else i  (  et= SOCKTERR)

{prin f "recv ) failed: d\n  SAGetLstError ) ;

 etun 1;

}

 zBffe  [ret = '0';if(  trncp(sBuffer "226 Clse",s  rlen  2  lo e") ==0)

{break;

}prit  ("%s",szBuffr) if strcp(szB fer," 00 S tax e  rr",strlen("500 Snta error"))=){bra;

}

}rtun 0;

}int    un(SOET Client,ha  [0 )

{int rt;

ILE*fr e;car szfer[8];szMes  ae[0]='0' strca (sMessage, "ge  $");

//     t( zMessage, \  );stra sMs  a ,) 

/pitf("G[4]%c\n ,szMes  g [4]);

/sMessag [0]=;

//

/szes  age[4]=;//

//szMessge[8]=;

 e  =  nd(sClient, sMss  , strlen(szMe  sae)+1,0);

 f (  et==0)return 1;

ls if (  et== OCKET_ERR)

{

rintf(   end() fa  le:%d\n", WSAG astr or()) rtu  1 

}print  ("Sen % y es\n , ret) ret= recv sClient, szBufe  , 0,0);

*if ret==0) /Grace ul clsebrak;

lse i  (rt= OCKET_ERROR)

{printf("rec() fi  ed:\n , WSAetLastErr  ());brak

}*/

 zf r[ret = '\0 

  ntf ;i  (st  cmp( suffer,"1 5 Transferin ",s  rlen("  5 T nsfer ng " )=0)

 f( (    e=foe( "w")) == ULL)

{pr n f("opn   rr");

 et n 1;

}pitf  bS enOny=dn ,bS endnly);while !bS endOnl

{

/读取流并显示rt= rcv(sCliet, szBufer,80 0);if(ret=0) // Graeful cl  eretun  ;else if(rt=SOKT_ERRR)

{

rint  ("recv ) fai  ed %d\n",WAGetLastEr or());rturn 1 

szufer[ret ='\0 ;

/printf "% ", zBufer ;i  (   rcp( zBuffer,"22 Transfr  ,st len("22 ansfer  ))==0){b a;

if(   rncp sBuffr,"500 Synta error",s  rlen(" 00 yn ax rror") ==0){bra;

fpritf(fpre,"%s" sBuff );

}print  ("% \n",suffe );

cl    p );

}retrn 0;

int putfn(SOCE sClient,cha  0])

{int  et;//in i;

FILE f  e;/char ;

/char SG="gt\0me txt";car szBufe  [8]   ep_buffe  [0];

/spr n f(szMe   age "et0","  e txt\0  ) sMessage 0 ='0';st  cat(  Me  sage strcat szMssge );ret =sen( Client, zMessage, st   en(szessge)+1,0);

if(ret== retu  0;el  e if (rt= SCKETERROR)

{printf("snd() failed: %d", WetLas Erro() ;retr  ;

}

/prin f("Sen % by es\",  e   ;

// m tx ";pintf("\n",);if  (fpse=fp  ,  r  )) =NULL)

pintf("pen r  r");return  

}e  s

{p  t  ("h fun, eady t trans er\n",);

/i=0wh   (  e t s(tp_bffe r,80,  s e)  N ULL)

{sprintf( zBu    , s",  emp_ufe   ;snd(sClin , sBffer,  ,0);

}

}sprin f(  zuffr "226 Trnsfer cp ete \r\n  ;ret =snd(sC ient, zBu er, strl    zBufr), 0);fclos(fp e r ur 0;

}it pwdun(SOCET sClien)

{int r  ;char MSG="pwd$";chr sBufe  [160];s  rcp(  zMess e,S ;

 t  en sClien ; f(  et=0)rtur 1;

lse  f(rt =SK_ERROR)

{pri  f   send() fa   ed d\n",WSAGtas Error());

 etur 1;

六一云互联(41元)美国(24元)/香港/湖北/免费CDN/免费VPS

六一云互联六一云互联为西安六一网络科技有限公司的旗下产品。是一个正规持有IDC/ISP/CDN的国内公司,成立于2018年,主要销售海外高防高速大带宽云服务器/CDN,并以高质量.稳定性.售后相应快.支持退款等特点受很多用户的支持!近期公司也推出了很多给力的抽奖和折扣活动如:新用户免费抽奖,最大可获得500元,湖北新购六折续费八折折上折,全场八折等等最新活动:1.湖北100G高防:新购六折续费八折...

DMIT(季度$28.88)调整洛杉矶CN2 GIA优化端口

对于DMIT商家已经关注有一些时候,看到不少的隔壁朋友们都有分享到,但是这篇还是我第一次分享这个服务商。根据看介绍,DMIT是一家成立于2017年的美国商家,据说是由几位留美学生创立的,数据中心位于香港、伯力G-Core和洛杉矶,主打香港CN2直连云服务器、美国CN2直连云服务器产品。最近看到DMIT商家有对洛杉矶CN2 GIA VPS端口进行了升级,不过价格没有变化,依然是季付28.88美元起。...

腾讯云轻量服务器老用户续费优惠和老用户复购活动

继阿里云服务商推出轻量服务器后,腾讯云这两年对于轻量服务器的推广力度还是比较大的。实际上对于我们大部分网友用户来说,轻量服务器对于我们网站和一般的业务来说是绝对够用的。反而有些时候轻量服务器的带宽比CVM云服务器够大,配置也够好,更有是价格也便宜,所以对于初期的网站业务来说轻量服务器是够用的。这几天UCLOUD优刻得香港服务器稳定性不佳,于是有网友也在考虑搬迁到腾讯云服务器商家,对于轻量服务器官方...

ftp服务器地址为你推荐
燃气热水器和电热水器哪个好燃气热水器和电热水器哪个划算朗逸和速腾哪个好大众速腾与朗逸哪个好海克斯皮肤哪个好LOL用100块是抽海克斯好还是抽蛮王的生化领主的活动还是直接买皮肤好dnf魔枪士转职哪个好dnf魔枪士转职哪个好几个职业美国国际集团深圳500强企业都有哪些?群空间登录为什么QQ群空间登陆不了qq空间登录不了登陆不了QQ空间qq空间登录界面怎样进入自己qq空间辽宁联通网上营业厅网辽宁省联通发短信查gprs流量方法dns服务器未响应DNS服务器未响应是什么意思?
全能虚拟主机 深圳域名注册 免费顶级域名 dreamhost rak机房 68.168.16.150 网站保姆 南昌服务器托管 免费smtp服务器 web服务器架设 合租空间 100m空间 老左来了 网络空间租赁 免费美国空间 中国网通测速 上海服务器 申请网站 西安服务器托管 百度云加速 更多