/* Internet connection test stub. * Ben Cranston 20020320 * Orderly shutdown for print server tester. */ #define USAGLINE "usage: port [-lm] [host] [port]" #define PORTNUMM 1069 #define BUFFSIZE 132 #include #include #include #include #include #include int markflag; /* Set if controls and EOL to be shown */ puntprog(s) char *s; { fprintf(stderr,"%s\n",s); exit(1); } puttchar(numm,buff) int numm; char *buff; { fwrite(buff,sizeof(char),numm,stdout); /* someday throw away CRs */ } markchar(numm,buff) int numm; char *buff; { int indx; int charbuff; for ( indx=0 ; indx (stat=select(16,&inset,&outset,&exset,NOTIMEOUT)) ) sleep(5); if ( FD_ISSET(sock,&inset) ) { stat = read(sock,netibuff,BUFFSIZE); if (stat<=0) doneflag = 0; else if (markflag) markchar(stat,netibuff); else puttchar(stat,netibuff); } if ( FD_ISSET(0,&inset) ) { stat = read(0,userbuff,BUFFSIZE); if (stat<=0) { doneflag = 1; shutdown(sock,1); } else { if ( userbuff[stat-1]=='\n' ) { userbuff[stat-1] = '\r'; userbuff[stat++] = '\n'; } write(sock,userbuff,stat); } } } } passopen(optind,argc,argv) int optind; int argc; char **argv; { static struct sockaddr_in sockaddr = { AF_INET }; static int sockalen = sizeof sockaddr; int sock; sock = PORTNUMM; if (optind (sock=socket(AF_INET,SOCK_STREAM,0)) ) puntprog("port: socket failed"); if ( 0 > bind(sock,(struct sockaddr*)&sockaddr,sockalen) ) puntprog("port: bind failed"); if ( 0 > listen(sock,1) ) puntprog("port: listen failed"); if ( 0 > (sock = accept(sock,(struct sockaddr*)&sockaddr,&sockalen)) ) puntprog("port: accept failed"); sendread(sock); } actvopen(optind,argc,argv) int optind; int argc; char **argv; { struct hostent *host; static struct sockaddr_in sockaddr = { AF_INET }; static int sockalen = sizeof sockaddr; char *hostname; int sock; if (optindh_addr,(caddr_t)&sockaddr.sin_addr,host->h_length); } fprintf(stderr,"Connecting to host %s ", inet_ntoa(sockaddr.sin_addr) ); sock = PORTNUMM; if (optind (sock=socket(AF_INET,SOCK_STREAM,0)) ) puntprog("port: socket failed"); if ( 0 > connect(sock,(struct sockaddr*)&sockaddr,sockalen) ) puntprog("port: connect failed"); sendread(sock); } main(argc,argv) int argc; char *argv[]; { int optn; extern int optind; int passflag; markflag = 0; passflag = 0; while ( EOF != ( optn = getopt(argc,argv,"lm") )) switch (optn) { case 'l': passflag++; break; case 'm': markflag++; break; case '?': default: puntprog("port: option problem..."); } if (passflag) passopen(optind,argc,argv); else actvopen(optind,argc,argv); }