资源描述:
《客户端程序源代码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include#include#include#include#include#definerec_length20main(intargc,char**argv){//structuredefinedforrequestasaclientstructhostent*hp1;structsockaddr_insin1;structservent*sp1;charsbuf[50];intss,spid;char*sservice
2、,*sdest;//structuredefinedforrequestasaserverstructsockaddr_insin;structservent*sp;ints,ns,pid;charbuf[50];char*service;//testtheenvironmentparameter:lservice,dservice,server_nameif(argc==4){service=argv[1];sservice=argv[2];sdest=argv[3];}else{fprintf(stderr,"Parameterassign
3、edError!Usage:");fprintf(stderr,"t%slservicedserviceserver_name!",argv[0]);fprintf(stderr,"Note:server_nameisdefinedinfile/etc/hosts");fprintf(stderr,"and:lservicedservicearedefinedinfile/etc/services");exit(-1);}if((sp=getservbyname(service,"tcp"))==NULL){fprintf
4、(stderr,"Error:getservbyname");exit(-5);}if((s=socket(AF_INET,SOCK_STREAM,0))==-1){fprintf(stderr,"Error:socketcreate");exit(-6);}bzero(&sin,sizeof(sin));sin.sin_port=sp->s_port;if(bind(s,&sin,sizeof(sin))==-1){fprintf(stderr,"Error:bind");close(s);exit(-6);}if(listen(s,5)==
5、-1){fprintf(stderr,"Error:listen");close(s);exit(-6);}while(1){fprintf(stderr,"tttNowwaitconnect...");if((ns=accept(s,0,0))==-1){//waitaconnection*/fprintf(stderr,"error:accept");continue;}if((pid=fork())==-1){//conneted,andthencreatechildprocfprintf(stderr,"server:fo
6、rkerror!");close(s);exit(-1);}if(pid!=0){//parentproce,nothingtodo,andtothenextloopclose(ns);wait(0);continue;}if(pid==0){//enteredchildproccedureclose(s);printf("Receiveaclientconnect:%s",argv[1]);if(read(ns,buf,rec_length)==0){fprintf(stderr,"Readnothingfromsocket:ns")
7、;close(ns);exit(-3);}printf("%sgetmessagefromns:%s",argv[0],buf);//requestmessagegotfromtheClient.//BegineaConnectiontoServerasaClientif((sp1=getservbyname(sservice,"tcp"))==NULL){fprintf(stderr,"Error:getservbynames1");exit(-5);}if((hp1=gethostbyname(sdest))==0){fprintf(s
8、tderr,"Error:gethostbynames1");exit(-6);}bzero(&sin1,sizeof(sin1));bcopy(hp