文件传输协议的简单设计与实现(c语言)文件传输协议的简单设计与实现(c语言,)使用Socket进行Client/Server程序设计的一般连接过程是这样的:Server端Listen(监听)某个端口是否有连接请求,Client端向Server端发出Connect(连接)请求,ept(接受)消息。一个连接就建立起来了。Server端和Client端都可以通过Send,Write等方法与对方通信。对于一个功能齐全的Socket,都要包含以下基本结构,其工作过程包含以下四个基本的步骤: (1)创建Socket; (2)打开连接到Socket的输入/出流; (3)按照一定的协议对Socket进行读/写操作; (4)关闭Socket. 第三步是程序员用来调用Socket和实现程序功能的关键步骤,其他三步在各种程序中基本相同。/********************************/#include<>#include<>#include<>#ment(lib,"")#defineDEFAULT_PORT2302#defineDEFAULT_BUFFER2048#defineDEFAULT_MESSAGE"Thisisatestoftheemergency\broadcastingsystem"charszServerip[128],//ServertoconnecttoszMessage[1024];//MessagetosendtoseverintiPort=DEFAULT_PORT;//Portonservertoconnectto//DWORDdwCount=DEFAULT_COUNT;//NumberoftimestosendmessageBOOLbSendOnly=FALSE;//Senddataonly;don'treceiveintdirfun();intgetfun();intputfun();intpwdfun();intcdfun();intmdfun();intdelfun();intusafun();voidusage(){printf("usage:client[-p:x][-s:IP][-n:x][-o]\n\n");printf("-p:xRemoteporttosendto\n");printf("-s:IPServer'sIPaddressorhostname\n");printf("-n:xNumberoftimestosendmessage\n");printf("-oSendmessagesonly;don'treceive\n");ExitProcess(1);}voidValidateArgs(intargc,char**argv){inti;for(i=1;i<argc;i++){if((argv[i][0]=='-')||(argv[i][0]=='/')){switch(tolower(argv[i][1])){case'p'://Remoteportif(strlen(argv[i])>3)iPort=atoi(&argv[i][3]);break;case's'://Serverif(strlen(argv[i])>3)strcpy(szServerip,&argv[i][3]);break;case'n'://Numberoftimestosendmessageif(strlen(argv[i])>3)//dwCount=atol(&argv[i][3]);break;case'o'://Onlysendmessage;don'treceivebSendOnly=TRUE;break;default:usage();break;}}}}intmain(intargc,char**argv){WSADATAwsd;SOCKETsClient;charszBuffer[DEFAULT_BUFFER];intret;//unsignedinti;//intj;structsockaddr_inserver;structhostent*host=NULL;charchoice[5],choice2[40];//mandlineandloadWinsock//argv[1]="-s:";strcpy(szServerip,&argv[1][3]);//ValidateArgs(argc,argv);if(WSAStartup(MAKEWORD(2,2),&wsd)!=0){printf("FailedtoloadWinsocklibrary!\n");return1;}
文件传输协议的简单设计与实现(c语言) 来自淘豆网m.daumloan.com转载请标明出处.