客户端程序源代码.docVIP

  • 21
  • 0
  • 约3.65千字
  • 约 3页
  • 2018-06-01 发布于河南
  • 举报
客户端程序源代码

#include stdio.h #include sys/types.h #include sys/socket.h #include netinet/in.h #include netdb.h #define rec_length 20 main(int argc, char **argv ) { // structure defined for request as a client struct hostent *hp1; struct sockaddr_in sin1; struct servent *sp1; char sbuf[50]; int ss,spid; char *sservice,*sdest; // structure defined for request as a server struct sockaddr_in sin; struct servent *sp; int s,ns,pid; char buf[50]; char *service; // test the environment parameter: lservice, dservice, server_name if(argc==4){ service=argv[1];sservice=argv[2]; sdest=argv[3];} else { fprintf(stderr,Parameter assigned Error!\nUsage:\n); fprintf(stderr,\t%s lservice dservice server_name!\n,argv[0]); fprintf(stderr,Note: server_name is defined in file /etc/hosts\n); fprintf(stderr,and: lservice dservice are defined in file /etc/services\n); exit(-1); } if((sp=getservbyname(service,tcp))==NULL){ fprintf(stderr,Error: getservbyname); exit(-5); } if((s=socket(AF_INET,SOCK_STREAM,0))==-1){ fprintf(stderr,Error: socket create); 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)==-1){ fprintf(stderr,Error: listen); close(s); exit(-6); } while(1){ fprintf(stderr,\n\t\t\t Now wait connect ...\n); if((ns=accept(s,0,0))==-1){ // wait a connection */ fprintf(stderr,error: accept); continue; } if((pid=fork())==-1){ // conneted, and then create child proc fprintf(stderr,server: fork error!); close(s); exit(-1); } if(pid!=0){ //parent proce, nothing to do, and to the next loop close(ns);wait(0);continue; } if(pid==0){ // entered child proccedure close(s); printf(Receive a client connect:%s\n,argv[1]); if(read(ns,buf,rec_length)==0){ fprintf(stderr,Read nothing from socket:ns\n); close(ns); exit(-3); } printf(%s get message from ns: %s\n,argv[0],buf); // reques

文档评论(0)

1亿VIP精品文档

相关文档