课程设计 F TP的设计与实现
/******* *****************/
include<winsock2 h>
#nlue < tdio >
in ude <s l b h>
#pragma commen (lib,"ws2_32 lib )
#define DFAULT_T 2302
#define DEFAUL_BUFFER
#defne EFAULMESGE "Th s i a test o the erge y \ boadcast g ste"
ar szerveri[128 , //Srer t cnnec szMe sage[1 24] //Messae nd to severin iPo t = FAULT_ORT;/Port on serer to nnect to
/WRD dCount =DEALT_CONT /Numbe of times to se me sgeBObSndnly =FASE /S data ony;don't reeiveint di fun ;int ge fun();int putfn();
nt w n );int cf () int mdfun();int delfun();in usa u );vi usae()
{printf "usag: c ent [-p:] [- :IP n:x] [o] );pr ntf( -p x Remot po t d n");pritf();
rintf );pr tf(" - Snd ms ges ny;don't re ve\n");
ExitProcess(1);
}
oi Val dateAg ( nt arc, car**argv)
{
t i;fo (i= 1;i<argc; i+
{i ((argv i][]= '- ) | | (rv[i] 0]==''))
{
witch ( lw a gv[i [1])
{cse
f(s rl e(a i])> 3)
Prt=aoi(&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]);
abSedOl TREbrakdefau t:u age( ;break;
}
}
}
}int ma n n a gc
{
WSADATA ws;
C KT Cli t;cha sBufer[DEFULT_BUFE R];
nt ret;
//usin e nt ;
//it j struct socaddr_in srerstrc ostent *hst= NUL;cha choice[] choic2[40 ;
//Prse te comman li ad oad Winok
/a gv 1]="s 127 0 ";strcy( zServerip,&rv[1][3]);
//Vlidatergs ar , a gv);if(WSAS artu(KEWD(2 2 &wd) =0)
pritf("ai ed to loainsok libra y!\");
etrn 1;
}
strcpy( Me sage, DFULT_MSAGE);
//
/ rea e th ocket, nd atte o connet to h se er//
Client= socke (AFIT,S OC_STREAM IRT O_TCP ;if s ient =INVALIOC KE)
{
rintf("socet ) faile:%d\n" AG astrror( ;
eturn ;
}serer n_fmil =AFINET;
erer inprt=hons( ort);p ntf(;server s n_add addr=int_ad(s ervri)
/
/If the supplied erver address wasn't in th f m
//if( erver s _addr s_ddr==INAD_NONE)
ho t= e hostbynae s erv ip);
f(host==NLL)
{
rintf(;return 1;
CopyMemo & erver in_add ,host->_adr st 0],ho t->h_len h);
}if (con (sCl en, (struct sockaddr )srersizef( r ) == SOET_ERROR)
{pr ntf("onnect ) fa led %d ,WSAGe Lastr or ));retur 1;
}
//显示接通信息
//
//
//for(j=0 j<;j++)
//
{ret=rec(slin , szBfer DEFAUTBUFFER, ;i ret0) //Grcful clo er un0;
lse if( et == SOCKET_EOR)
p n f( rec() i d:%\n" WSAtLstEr or( ;r e trn ;
szBuffe [ t] '\0';pri ("%s\ ,szBufer);if(ret<1
{
et cv( Client, zuff DFAULT_UR,0) if(ret =0) // racef lose
etur 0e e if (ret= OCKETERO)
{
/printf("recv() fa ed:%dn SGe Las Er or ));retrn
}szB fer ret '0';
rin "s\n",szBuffer);
}
/printf("DEAULUFFE=%\ ,DEFA_BUFFE);
}whi l e 1
{puts("------------------------");prin ("ft> ;scan (" ch ce);if(strcm hic, i ",3)==0| | tr m(h ce,"D ,2)=0){dirfun(sClient ;contine
}el se st ncmp choi c e,"pd",3 =0| | tr mp(c i ,"PWD" 3)=0{pwdfun s e );
ntine;
}e e if(st ncmp(cho ce, " )=0)
{u fun( Cliet)
con iu;
}
l (st ncm(hi c e,"qu t",4 == | st nmp(choie "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(strncp(choic,"pt ,3)==0| | s ncp(choie "PUT",3 ==)
{put u(sClien ,ch 2 ;cntinue;
e e if(strncm( oice " ",)==0| | st cmp(c ice, CD" 2)==)cdfun( Clint,ho c2 co iue;
}e s i trnc( oie,"m",)= | | trcmp(coi c e, D" 2 =0){mdfun( Cl en coie2 ;continue;
}e se if(str mp(co ce,"del" 3)= | | trncmp(h e "DL",)==0){delfun sClient choice cotiue;
e
uts("输入错误请重新输入 );
flu sh s di);fflsh(s n) printf "\");pri f \n")
}c ose c t(sCl et ;
WSAlanup();retur ;
n d rfun(OCKET sCl ent)
in re ;cha *MG="di ";char sfer[ ];s rcpy(sMssage, MG);ret= send( Clint ;if(rt= 0)return ;e e if(rt==SCKE_EROR
rintf("send() fa l :%d\n", WSGetLatErrr()) retun ;
}
//printf "Se d s\n , ret);
//rin f("bSendOnl%d\n",S endOnly);while(!bS endOnly)
/读取流并显示
// e = recv(sl nt, zuffer,8, 0);
//p ntf("%s", zBuffe );
e =recv(sC ient, szBuff ,8, ) if ret ==0 // acefu lsreturn 1 else i ( et= SOCKTERR)
{prin f "recv ) failed: d\n SAGetLstError ) ;
etun 1;
}
zBffe [ret = '0';if( trncp(sBuffer "226 Clse",s rlen 2 lo e") ==0)
{break;
}prit ("%s",szBuffr) if strcp(szB fer," 00 S tax e rr",strlen("500 Snta error"))=){bra;
}
}rtun 0;
}int un(SOET Client,ha [0 )
{int rt;
ILE*fr e;car szfer[8];szMes ae[0]='0' strca (sMessage, "ge $");
// t( zMessage, \ );stra sMs a ,)
/pitf("G[4]%c\n ,szMes g [4]);
/sMessag [0]=;
//
/szes age[4]=;//
//szMessge[8]=;
e = nd(sClient, sMss , strlen(szMe sae)+1,0);
f ( et==0)return 1;
ls if ( et== OCKET_ERR)
{
rintf( end() fa le:%d\n", WSAG astr or()) rtu 1
}print ("Sen % y es\n , ret) ret= recv sClient, szBufe , 0,0);
*if ret==0) /Grace ul clsebrak;
lse i (rt= OCKET_ERROR)
{printf("rec() fi ed:\n , WSAetLastErr ());brak
}*/
zf r[ret = '\0
ntf ;i (st cmp( suffer,"1 5 Transferin ",s rlen(" 5 T nsfer ng " )=0)
f( ( e=foe( "w")) == ULL)
{pr n f("opn rr");
et n 1;
}pitf bS enOny=dn ,bS endnly);while !bS endOnl
{
/读取流并显示rt= rcv(sCliet, szBufer,80 0);if(ret=0) // Graeful cl eretun ;else if(rt=SOKT_ERRR)
{
rint ("recv ) fai ed %d\n",WAGetLastEr or());rturn 1
szufer[ret ='\0 ;
/printf "% ", zBufer ;i ( rcp( zBuffer,"22 Transfr ,st len("22 ansfer ))==0){b a;
if( rncp sBuffr,"500 Synta error",s rlen(" 00 yn ax rror") ==0){bra;
fpritf(fpre,"%s" sBuff );
}print ("% \n",suffe );
cl p );
}retrn 0;
int putfn(SOCE sClient,cha 0])
{int et;//in i;
FILE f e;/char ;
/char SG="gt\0me txt";car szBufe [8] ep_buffe [0];
/spr n f(szMe age "et0"," e txt\0 ) sMessage 0 ='0';st cat( Me sage strcat szMssge );ret =sen( Client, zMessage, st en(szessge)+1,0);
if(ret== retu 0;el e if (rt= SCKETERROR)
{printf("snd() failed: %d", WetLas Erro() ;retr ;
}
/prin f("Sen % by es\", e ;
// m tx ";pintf("\n",);if (fpse=fp , r )) =NULL)
pintf("pen r r");return
}e s
{p t ("h fun, eady t trans er\n",);
/i=0wh ( e t s(tp_bffe r,80, s e) N ULL)
{sprintf( zBu , s", emp_ufe ;snd(sClin , sBffer, ,0);
}
}sprin f( zuffr "226 Trnsfer cp ete \r\n ;ret =snd(sC ient, zBu er, strl zBufr), 0);fclos(fp e r ur 0;
}it pwdun(SOCET sClien)
{int r ;char MSG="pwd$";chr sBufe [160];s rcp( zMess e,S ;
t en sClien ; f( et=0)rtur 1;
lse f(rt =SK_ERROR)
{pri f send() fa ed d\n",WSAGtas Error());
etur 1;
今天看到群里的老秦同学在布局自己的网站项目,这个同学还是比较奇怪的,他就喜欢用这些奇怪的域名。比如前几天看到有用.in域名,个人网站他用的.me域名不奇怪,这个还是常见的。今天看到他在做的一个范文网站的域名,居然用的是 .asia 后缀。问到其理由,是有不错好记的前缀。这里简单的搜索到.ASIA域名的新注册价格是有促销的,大约35元首年左右,续费大约是80元左右,这个成本算的话,比COM域名还贵。...
hostkvm本月对香港国际线路的VPS、韩国CN2+bgp线路的VPS正在做7折终身优惠,对日本软银线路、美国CN2 GIA线路、新加坡直连线路的VPS进行8折终身优惠促销。所有VPS从4G内存开始支持Windows系统,当然主流Linux发行版是绝对不会缺席的!官方网站:https://hostkvm.com香港国际线路、韩国,7折优惠码:2021summer日本、美国、新加坡,8折优惠码:2...
Megalayer 商家主营业务是以独立服务器和站群服务器的,后来也陆续的有新增香港、菲律宾数据中心的VPS主机产品。由于其线路的丰富,还是深受一些用户喜欢的,有CN2优化直连线路,有全向国际线路,以及针对欧美的国际线路。这次有看到商家也有新增美国机房的VPS主机,也有包括15M带宽CN2优化带宽以及30M带宽的全向线路。Megalayer 商家提供的美国机房VPS产品,提供的配置方案也是比较多,...