int main(int argc,char **argv) { int listenfd,connfd; socklen_t len,addrlen; char host[NI_MAXHOST],serv[NI_MAXSERV],buff[MAXLINE]; time_t ticks; struct sockaddr_storage cliaddr; if(argc == 2) listenfd = Tcp_listen(NULL,argv[1],&addrlen); else if(argc == 3) listenfd = Tcp_listen(argv[1],argv[2],&addrlen); else err_quit("usage:daytimetcpsrv2 [ <host> ] <service or port#>"); for( ; ; ){ len = sizeof(cliaddr); connfd = Accept(listenfd,(SA *)&cliaddr,&len); if(getnameinfo((SA *)&cliaddr,len,host,NI_MAXHOST,serv,NI_MAXSERV, NI_NUMERICHOST|NI_NUMERICSERV) != 0) err_quit("getnameinfo error"); printf("connection from %s.%s\n",host,serv); ticks = time(NULL); snprintf(buff,sizeof(buff),"%.24s\r\n",ctime(&ticks)); Write(connfd,buff,strlen(buff)); Close(connfd); } }
int main(int argc, char** argv) { int listenfd, connfd; void sig_int(int), web_child(int); socklen_t clilen, addrlen; struct sockaddr* cliaddr; if (argc == 2) listenfd = Tcp_listen(NULL, argv[1], &addrlen); else if (argc == 3) listenfd = Tcp_listen(argv[1], argv[2], &addrlen); else err_quit("usage: serv00 [ <host> ] <port#>"); cliaddr = Malloc(addrlen); Signal(SIGINT, sig_int); for (;;) { clilen = addrlen; connfd = Accept(listenfd, cliaddr, &clilen); web_child(connfd); /* process the request */ Close(connfd); /* parent closes connected socket */ } }
int main(int argc, char **argv) { int listenfd, connfd; socklen_t addrlen, len; struct sockaddr *cliaddr; char buff[MAXLINE]; time_t ticks; if (argc < 2 || argc > 3) err_quit("usage: daytimetcpsrv2 [ <host> ] <service or port#>"); daemon_init(argv[0], 0); if (argc == 2) listenfd = Tcp_listen(NULL, argv[1], &addrlen); else listenfd = Tcp_listen(argv[1], argv[2], &addrlen); cliaddr = Malloc(addrlen); for (;;) { len = addrlen; connfd = Accept(listenfd, cliaddr, &len); err_msg("connection from %s", Sock_ntop(cliaddr, len)); ticks = time(NULL); snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks)); Write(connfd, buff, strlen(buff)); Close(connfd); } }
int main(int argc, char **argv) { int listenfd, i; socklen_t addrlen; void sig_int(int); pid_t child_make(int, int, int); if (argc == 3) listenfd = Tcp_listen(NULL, argv[1], &addrlen); else if (argc == 4) listenfd = Tcp_listen(argv[1], argv[2], &addrlen); else err_quit("usage: ./server_prefork_meter [ <host> ] <port#> <#children>"); nchildren = atoi(argv[argc-1]); pids = calloc(nchildren, sizeof(pid_t)); cptr = meter(nchildren); if(pids == NULL) { err_sys("calloc"); } for (i = 0; i < nchildren; i++) pids[i] = child_make(i, listenfd, addrlen); /* parent returns */ if (signal(SIGINT, sig_int) == SIG_ERR) perror("signal SIGINT"); for ( ; ; ) pause(); /* everything done by children */ }
int main(int argc, char **argv) { int listenfd, connfd; void sig_int(int); void *doit(void *); pthread_t tid; socklen_t clilen, addrlen; struct sockaddr *cliaddr; if (argc == 2) listenfd = Tcp_listen(NULL, argv[1], &addrlen); else if (argc == 3) listenfd = Tcp_listen(argv[1], argv[2], &addrlen); else err_quit("usage: serv06 [ <host> ] <port#>"); cliaddr = Malloc(addrlen); Signal(SIGINT, sig_int); for ( ; ; ) { clilen = addrlen; connfd = Accept(listenfd, cliaddr, &clilen); Pthread_create(&tid, NULL, &doit, (void *) connfd); } }
//=============================main function============================ int main(int argc,char **argv) { int listenfd,connfd; pid_t childpid; socklen_t clilen,addrlen; struct sockaddr *cliaddr; if (argc == 2) listenfd = Tcp_listen(NULL,argv[1],&addrlen); else if (argc == 3) listenfd = Tcp_listen(argv[1],argv[2],&addrlen); else err_quit("usage: server [<host>] <port#>"); cliaddr = Malloc(addrlen); Signal(SIGCHLD,sig_chld); Signal(SIGINT,sig_int); for (;;) { clilen = addrlen; if ((connfd = accept(listenfd,cliaddr,&clilen))<0) { if (errno == EINTR) continue; else err_sys("accept error"); } if ((childpid == Fork()) == 0) { Close(listenfd); web_child(connfd); exit(0); } Close(connfd); } }
int main(int argc, char **argv) { int listenfd, connfd, n, on=1; char buff[100]; if (argc == 2) listenfd = Tcp_listen(NULL, argv[1], NULL); else if (argc == 3) listenfd = Tcp_listen(argv[1], argv[2], NULL); else err_quit("usage: tcprecv06 [ <host> ] <port#>"); Setsockopt(listenfd, SOL_SOCKET, SO_OOBINLINE, &on, sizeof(on)); connfd = Accept(listenfd, NULL, NULL); sleep(5); for ( ; ; ) { if (Sockatmark(connfd)) printf("at OOB mark\n"); if ( (n = Read(connfd, buff, sizeof(buff)-1)) == 0) { printf("received EOF\n"); exit(0); } buff[n] = 0; /* null terminate */ printf("read %d bytes: %s\n", n, buff); } }
int main(int argc,char *argv[]) { int listenfd,connfd; pid_t pid; socklen_t servlen,clilen; struct sockaddr *cliaddr; if(argc == 2) listenfd =Tcp_listen(NULL,argv[1],&servlen); else if(argc == 3) listenfd = Tcp_listen(argv[0],argv[1],&servlen); else err_quit("usage: serv01 [<host or IPAddr>] <#port>"); Signal(SIGCHLD,sig_chld); Signal(SIGINT,sig_int); cliaddr = malloc(servlen); for(;;) { clilen = servlen; if((connfd = accept(listenfd,cliaddr,&clilen)) < 0){ if(errno == EINTR) continue; else err_quit("accept error"); } if((pid = fork()) == 0) { Close(listenfd); child_web(connfd); exit(0); } Close(connfd); } }
int main(int argc, char** argv) { int listenfd, connfd; socklen_t addrlen, len; struct sockaddr* cliaddr; char buff[MAXLINE], host[NI_MAXHOST], serv[NI_MAXSERV]; time_t ticks; if (argc == 2) listenfd = Tcp_listen(NULL, argv[1], &addrlen); else if (argc == 3) listenfd = Tcp_listen(argv[1], argv[2], &addrlen); else err_quit("usage: daytimetcpsrv4 [ <host> ] <service or port>"); cliaddr = Malloc(addrlen); for (;;) { len = addrlen; connfd = Accept(listenfd, cliaddr, &len); if (getnameinfo(cliaddr, len, host, NI_MAXHOST, serv, NI_MAXSERV, NI_NUMERICHOST | NI_NUMERICSERV) == 0) printf("connection from %s.%s\n", host, serv); ticks = time(NULL); snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks)); Write(connfd, buff, strlen(buff)); Close(connfd); } }
int main(int argc, char **argv) { int listenfd, connfd; pid_t childpid; void sig_chld(int), sig_int(int), web_child(int); socklen_t addrlen; struct netbuf cliaddr; if (argc == 2) listenfd = Tcp_listen(NULL, argv[1], &addrlen); else if (argc == 3) listenfd = Tcp_listen(argv[1], argv[2], &addrlen); else err_quit("usage: serv01 [ <host> ] <port#>"); cliaddr.buf = Malloc(addrlen); cliaddr.maxlen = addrlen; Signal(SIGCHLD, sig_chld); Signal(SIGINT, sig_int); for ( ; ; ) { connfd = Xti_accept(listenfd, &cliaddr, 1); printf("connection from %s\n", Xti_ntop(&cliaddr)); if ( (childpid = Fork()) == 0) { /* child process */ Close(listenfd); /* close listening socket */ web_child(connfd); /* process the request */ exit(0); } Close(connfd); /* parent closes connected socket */ } }
int main(int argc, char** argv) { int listenfd, connfd; socklen_t len, addrlen; char buff[MAXLINE]; time_t ticks; struct sockaddr_storage cliaddr; if (argc == 2) listenfd = Tcp_listen(NULL, argv[1], &addrlen); else if (argc == 3) listenfd = Tcp_listen(argv[1], argv[2], &addrlen); else err_quit("usage: daytimetcpsrv2 [ <host> ] <service or port>"); for (;;) { len = sizeof(cliaddr); connfd = Accept(listenfd, (SA*)&cliaddr, &len); printf("connection from %s\n", Sock_ntop((SA*)&cliaddr, len)); ticks = time(NULL); snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks)); Write(connfd, buff, strlen(buff)); Close(connfd); } }
int main(int argc, char *argv[]) { int listenfd , i; socklen_t addrlen; void sig_int(int); pid_t child_make(int,int,int); if(argc == 3) listenfd = Tcp_listen(NULL, argv[1], &addrlen); else if(argc == 4) listenfd = Tcp_listen(argv[1], argv[2], &addrlen); else err_quit("usage: serv02 [<host>] <port#> <#children>"); nchildren = atoi(argv[argc-1]); pids = (pid_t*)Calloc(nchildren, sizeof(pid_t)); cptr = meter(nchildren); for (i = 0; i < nchildren; ++i) { /* code */ pids[i] = child_make(i, listenfd, addrlen); } Signal(SIGINT, sig_int); for(;;) pause(); }
int main(int argc, char *argv[]) { int listenfd, connfd; socklen_t len, addrlen; struct sockaddr *cliaddr; pthread_t tid; if (argc == 2) { listenfd = Tcp_listen(NULL, argv[1], &addrlen); } if (argc == 3) { listenfd = Tcp_listen(argv[1], argv[2],&addrlen); } if (argc != 3 && argc != 2) { err_quit("usage : tcpserver_thread [<host>] <port or service>"); } cliaddr = Malloc(addrlen); for ( ; ; ) { len = addrlen; connfd = Accept(listenfd, cliaddr, &len); Pthread_create(&tid, NULL, &doit, (void*)connfd); } return 0; }
int main(int argc, char **argv) { int listenfd, connfd, n, flags; char buff[MAXLINE]; struct pollfd fds[1]; if (argc == 2) listenfd = Tcp_listen(NULL, argv[1], NULL); else if (argc == 3) listenfd = Tcp_listen(argv[1], argv[2], NULL); else err_quit("usage: daytimetcpsrv01 [ <host> ] <service or port>"); connfd = Xti_accept(listenfd, NULL, 0); fds[0].fd = connfd; fds[0].events = POLLIN | POLLRDNORM | POLLRDBAND | POLLPRI; for ( ; ; ) { n = poll(fds, 1, INFTIM); printf("poll returned %d, revents = 0x%x\n", n, fds[0].revents); n = T_rcv(connfd, buff, sizeof(buff), &flags); printf("received %d bytes, flags = %d\n", n, flags); } }
int main(int argc, char **argv) { int n; char buff[100]; if (argc == 2) listenfd = Tcp_listen(NULL, argv[1], NULL); else if (argc == 3) listenfd = Tcp_listen(argv[1], argv[2], NULL); else err_quit("usage: tcprecv01 [ <host> ] <port#>"); connfd = Accept(listenfd, NULL, NULL); Signal(SIGURG, sig_urg); Fcntl(connfd, F_SETOWN, getpid());// set shuzu for ( ; ; ) { if ( (n = Read(connfd, buff, sizeof(buff)-1)) == 0) { printf("received EOF\n"); exit(0); } buff[n] = 0; /* null terminate */ printf("read %d bytes: %s\n", n, buff); } }
int main(int argc, char **argv) { int listenfd, i; socklen_t addrlen; void sig_int(int); pid_t child_make(int, int, int); if (argc == 3) listenfd = Tcp_listen(NULL, argv[1], &addrlen); else if (argc == 4) listenfd = Tcp_listen(argv[1], argv[2], &addrlen); else err_quit("usage: serv03 [ <host> ] <port#> <#children>"); nchildren = atoi(argv[argc-1]); pids = Calloc(nchildren, sizeof(pid_t)); cptr = meter(nchildren); my_lock_init("/tmp/lock.XXXXXX"); /* one lock file for all children */ for (i = 0; i < nchildren; i++) pids[i] = child_make(i, listenfd, addrlen); /* parent returns */ Signal(SIGINT, sig_int); for ( ; ; ) pause(); /* everything done by children */ }
int main(int argc,char *argv[]) { void thread_make(int); int i,nthreads; socklen_t addrlen; if(argc<3||argc>4) err_quit("usage:server [<host>] <port#> <#threads>"); daemon_init(argv[0],0); /*守护进程化当前进程*/ if(argc==3) { listenfd=Tcp_listen(NULL,argv[1],&addrlen); } else if(argc==4) { listenfd=Tcp_listen(argv[1],argv[2],&addrlen); } nthreads=atoi(argv[argc-1]); tptr=Calloc(nthreads,sizeof(pthread_t)); for(i=0; i<nthreads; i++) { thread_make(i); } for(;;) pause(); }
int main(int argc, char const *argv[]) { int n; char buff[100]; if (argc==2) { listenfd=Tcp_listen(NULL,argv[1],NULL); } else if (argc==3) { listenfd=Tcp_listen(argv[1],argv[2],NULL) } else err_quit("useage: tcprecv [<host>] <port#>"); connfd=Accept(listenfd,NULL,NULL); Signal(SIGURG,sig_urg); Fcntl(connfd,F_SETOWN,getpid()); for (; ; ) { if ((n=Read(connfd,buff,sizeof(buff)-1))==0) { printf("received EOF\n" ); exit(0); } buff[n]=0; printf("read %d bytes:%s\n",n,buff ); } return 0; }
int main(int argc, char** argv) { int listenfd, connfd; pthread_t tid; socklen_t addrlen, len; struct sockaddr* cliaddr; if(argc == 2) { listenfd = Tcp_listen(NULL, argv[1], &addrlen); } else if(argc == 3) { listenfd = Tcp_listen(argv[1], argv[2], &addrlen); } else { err_quit("usage: tcpserv01 [<host>] <service or port>"); } cliaddr = Malloc(addrlen); while(1) { len = addrlen; connfd = Accept(listenfd, cliaddr, &len); Pthread_create(&tid, NULL, &doit, (void*)&connfd); } }
int main(int argc, char **argv) { int n, flags; char buff[NREAD+1]; /* +1 for null at end */ if (argc == 2) listenfd = Tcp_listen(NULL, argv[1], NULL); else if (argc == 3) listenfd = Tcp_listen(argv[1], argv[2], NULL); else err_quit("usage: tcprecv02 [ <host> ] <port#>"); connfd = Xti_accept(listenfd, NULL, NULL); Signal(SIGPOLL, sig_poll); Ioctl(connfd, I_SETSIG, S_RDNORM); for ( ; ; ) { flags = 0; if ( (n = t_rcv(connfd, buff, NREAD, &flags)) < 0) { if (t_errno == TLOOK) { if ( (n = T_look(connfd)) == T_ORDREL) { printf("received T_ORDREL\n"); exit(0); } else err_quit("unexpected event after t_rcv: %d", n); } err_xti("t_rcv error"); } buff[n] = 0; /* null terminate */ printf("read %d bytes: %s, flags = %s\n", n, buff, Xti_flags_str(flags)); } }
int main(int argc, char **argv) { int i, listenfd, connfd; socklen_t addrlen, len; struct sockaddr *cliaddr; char buff[MAXLINE]; time_t ticks; if (argc == 2) listenfd = Tcp_listen(NULL, argv[1], &addrlen); else if (argc == 3) listenfd = Tcp_listen(argv[1], argv[2], &addrlen); else err_quit("usage: daytimetcpsrv2 [ <host> ] <service or port>"); cliaddr = Malloc(addrlen); for ( ; ; ) { len = addrlen; connfd = Accept(listenfd, cliaddr, &len); printf("connection from %s\n", Sock_ntop(cliaddr, len)); ticks = time(NULL); snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks)); for (i = 0; i < strlen(buff); i++) Send(connfd, &buff[i], 1, MSG_EOR); Close(connfd); } }
int main(int argc, char **argv) { int listenfd_e,listenfd_t, *iptr,*jptr; char port_echo[6],port_time[6]; pthread_t tid; socklen_t addrlen, len; struct sockaddr *cliaddr; int maxfdp1; fd_set rset; strcpy(port_echo,"9870"); //assumed to be the well-known port number for echo service strcpy(port_time,"9880"); //assumed to be the well-known port number for time service listenfd_e = Tcp_listen(NULL, port_echo, &addrlen); //set up listening socket for echo service listenfd_t= Tcp_listen(NULL, port_time, NULL); //set up listening socket for time service cliaddr = Malloc(addrlen); FD_ZERO(&rset); for ( ; ; ) { len = addrlen; iptr = Malloc(sizeof(int)); jptr = Malloc(sizeof(int)); FD_SET(listenfd_e, &rset); FD_SET(listenfd_t, &rset); maxfdp1 = max(listenfd_e,listenfd_t) + 1; // printf("Entering main select..."); Select(maxfdp1, &rset, NULL, NULL, NULL); // printf("Exited main select"); if (FD_ISSET(listenfd_e, &rset)) { // Listening socket for echo service is readable *iptr = Accept(listenfd_e, cliaddr, &len); Pthread_create(&tid, NULL, &doecho, iptr); } if (FD_ISSET(listenfd_t, &rset)) { // Listening socket for time service is readable *jptr = Accept(listenfd_t, cliaddr, &len); Pthread_create(&tid, NULL, &dotime, jptr); } } }
int main(int argc, char *argv[]) { int listenfd, i; socklen_t addrlen; void sig_int(int); pid_t child_make(int, int,int); void my_lock_init(char *); void my_lock_wait(); void my_lock_release(); if (argc == 3) { listenfd = Tcp_listen(NULL, argv[1], &addrlen); } if (argc == 4) { listenfd = Tcp_listen(argv[1], argv[2], &addrlen); } if (argc != 3 && argc != 4) { err_quit("usage: prefork_server01 [<host>] <port#> <#children>"); } nchildren = atoi(argv[argc-1]); pids = Calloc(nchildren, sizeof(pid_t)); my_lock_init("/tmp/lock.XXXXXX"); for (i=0 ;i < nchildren ;i++ ) { pids[i] = child_make(i, listenfd, addrlen); } Signal(SIGINT, sig_int); for ( ; ; ) { pause(); /* 実際の処理は子プロセスが行う */ } return 0; }
int server_socket(const char *host,const char *portnum){ int listenfd; socklen_t addrlen; listenfd = Tcp_listen(host, portnum, &addrlen); return (listenfd); }
int main(int argc, char **argv) { int listenfd, connfd, n, justreadoob = 0; char buff[100]; fd_set rset, xset; if (argc == 2) listenfd = Tcp_listen(NULL, argv[1], NULL); else if (argc == 3) listenfd = Tcp_listen(argv[1], argv[2], NULL); else err_quit("usage: tcprecv03 [ <host> ] <port#>"); connfd = Accept(listenfd, NULL, NULL); FD_ZERO(&rset); FD_ZERO(&xset); for ( ; ; ) { FD_SET(connfd, &rset); if (justreadoob == 0) FD_SET(connfd, &xset); Select(connfd + 1, &rset, NULL, &xset, NULL); if (FD_ISSET(connfd, &xset)) { n = Recv(connfd, buff, sizeof(buff)-1, MSG_OOB); buff[n] = 0; /* null terminate */ printf("read %d OOB byte: %s\n", n, buff); justreadoob = 1; FD_CLR(connfd, &xset); } if (FD_ISSET(connfd, &rset)) { if ( (n = Read(connfd, buff, sizeof(buff)-1)) == 0) { printf("received EOF\n"); exit(0); } buff[n] = 0; /* null terminate */ printf("read %d bytes: %s\n", n, buff); justreadoob = 0; } } }
int main(int argc, char **argv) { int n, flags; char buff[NREAD+1]; /* +1 for null at end */ struct pollfd pollfd[1]; if (argc == 2) listenfd = Tcp_listen(NULL, argv[1], NULL); else if (argc == 3) listenfd = Tcp_listen(argv[1], argv[2], NULL); else err_quit("usage: tcprecv05 [ <host> ] <port#>"); connfd = Xti_accept(listenfd, NULL, NULL); sleep(5); pollfd[0].fd = connfd; pollfd[0].events = POLLIN; for ( ; ; ) { Poll(pollfd, 1, INFTIM); printf("revents = %x\n", pollfd[0].revents); if (pollfd[0].revents & POLLIN) { flags = 0; if ( (n = t_rcv(connfd, buff, NREAD, &flags)) < 0) { if (t_errno == TLOOK) { if ( (n = T_look(connfd)) == T_ORDREL) { printf("received T_ORDREL\n"); exit(0); } else err_quit("unexpected event after t_rcv: %d", n); } err_xti("t_rcv error"); } buff[n] = 0; /* null terminate */ printf("read %d bytes: %s, flags = %s\n", n, buff, Xti_flags_str(flags)); } } }
int main(int argc, char **argv) { int listenfd, connfd; void sig_int(int), web_child(int); socklen_t clilen, addrlen; struct sockaddr *cliaddr; if (argc == 2) listenfd = Tcp_listen(NULL, argv[1], &addrlen); else if (argc == 3) listenfd = Tcp_listen(argv[1], argv[2], &addrlen); else err_quit("usage: serv01 [ <host> ] <port#>"); cliaddr = malloc(addrlen); if(cliaddr == NULL) { err_sys("malloc"); } if (signal(SIGINT, sig_int) == SIG_ERR) perror("signal SIGINT:"); int i = 0; for ( ; ; ) { if(i % 1000 == 0) { printf("i == %d\n", i); } clilen = addrlen; if ( (connfd = accept(listenfd, cliaddr, &clilen)) < 0) { if (errno == EINTR) continue; /* back to for() */ else err_sys("accept error"); } web_child(connfd); /* process request */ close(connfd); i++; } }
int main(int argc, char **argv) { int size; if (argc == 2) listenfd = Tcp_listen(NULL, argv[1], NULL); else if (argc == 3) listenfd = Tcp_listen(argv[1], argv[2], NULL); else err_quit("usage: tcprecv05 [ <host> ] <port#>"); size = 4096; Setsockopt(listenfd, SOL_SOCKET, SO_RCVBUF, &size, sizeof(size)); connfd = Accept(listenfd, NULL, NULL); Signal(SIGURG, sig_urg); Fcntl(connfd, F_SETOWN, getpid()); for ( ; ; ) pause(); }
int main(int argc, char **argv) { int i; void sig_int(int), thread_make(int); if (argc == 3) listenfd = Tcp_listen(NULL, argv[1], &addrlen); else if (argc == 4) listenfd = Tcp_listen(argv[1], argv[2], &addrlen); else err_quit("usage: serv09 [ <host> ] <port#> <#threads>"); nthreads = atoi(argv[argc-1]); tptr = Calloc(nthreads, sizeof(Thread)); for (i = 0; i < nthreads; i++) thread_make(i); /* only main thread returns */ Signal(SIGINT, sig_int); for ( ; ; ) pause(); /* everything done by threads */ }
int main(int argc,char *argv[]) { int n; char buf[100]; if(argc == 2) listenfd = Tcp_listen(NULL,argv[1],NULL); else if(argc == 3) listenfd = Tcp_listen(argv[1],argv[2],NULL); else err_quit("usage:tcprecv01 [<host>] <service>"); acceptfd = Accept(listenfd,NULL,NULL); signal(SIGURG,sig_urg); fcntl(acceptfd,F_SETOWN,getpid()); for(;;){ if((n = Read(sockfd,buf,sizeof(buf)-1)) == 0){ printf("received EOF\n"); exit(0); } buf[n] = 0; printf("read %d normal bytes:%s\n",n,buf); } }