显示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;

#消息# contabo:德国老牌机房新增美国“纽约、西雅图”数据中心,免设置费

运作了18年的德国老牌机房contabo在继去年4月开办了第一个美国数据中心(中部城市:圣路易斯)后立马在本月全新上马两个数据中心:纽约、西雅图。当前,为庆祝美国独立日,美国三个数据中心的VPS全部免除设置费,VPS本身的配置很高,价格适中,有较高的性价比!官方网站:https://contabo.com/en/SSD VPSKVM虚拟,纯SSD阵列,不限制流量,自带一个IPv4内存CPUSSD带...

BuyVM新设立的迈阿密机房速度怎么样?简单的测评速度性能

BuyVM商家算是一家比较老牌的海外主机商,公司设立在加拿大,曾经是低价便宜VPS主机的代表,目前为止有提供纽约、拉斯维加斯、卢森堡机房,以及新增加的美国迈阿密机房。如果我们有需要选择BuyVM商家的机器需要注意的是注册信息的时候一定要规范,否则很容易出现欺诈订单,甚至你开通后都有可能被禁止账户,也是这个原因,曾经被很多人吐槽的。这里我们简单的对于BuyVM商家新增加的迈阿密机房进行简单的测评。如...

欧路云:美国CUVIP线路10G防御,8折优惠,19元/月起

欧路云新上了美国洛杉矶cera机房的云服务器,具备弹性云特征(可自定义需要的资源配置:E5-2660 V3、内存、硬盘、流量、带宽),直连网络(联通CUVIP线路),KVM虚拟,自带一个IP,支持购买多个IP,10G的DDoS防御。付款方式:PayPal、支付宝、微信、数字货币(BTC USDT LTC ETH)测试IP:23.224.49.126云服务器 全场8折 优惠码:zhujiceping...

ftp服务器地址为你推荐
集成显卡和独立显卡哪个好独立显卡和集成显卡区别??录音软件哪个好录音软件哪个好绝地求生加速器哪个好绝地求生用什么加速器比较好?炒股软件哪个好股票软件哪个最好用?oppo和vivo哪个好vivo和oppo建议买哪个电动牙刷哪个好有人懂电动牙刷吗?飞利浦的好用还是欧乐B好用美国国际集团美国AIG股票,值得长远投资吗??美国国际东西方大学凭高考成绩可以申请哪些海外大学?dns服务器未响应网络dns服务器未响应要怎么解决360云盘36t现在360云盘不能免费领取36T了吗?活动到期了?怎么领取更多空间?详细步骤和地址。
香港服务器租用99idc 万网免费域名 windows2003iso 地址大全 免费ftp空间申请 e蜗 免费防火墙 网游服务器 服务器监测 银盘服务 韩国代理ip 硬防 冰盾ddos防火墙 主机配置 大容量存储控制器驱动 qq空间申请关闭 灵动:鬼影实录2 无限流量卡 免费网络电话软件 真正的免费网络电话 更多