这篇教程C++ str_echo函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中str_echo函数的典型用法代码示例。如果您正苦于以下问题:C++ str_echo函数的具体用法?C++ str_echo怎么用?C++ str_echo使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了str_echo函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: cmd_echostatic void cmd_echo(char ch){ if ((ch == 0x08 || ch == 0x7F) && cmd_args.len > 0)//退格或删除 { char str[] = {0x08, ' ', 0x08}; cmd_args.len--; str_echo(str, sizeof(str)); } else { if (ch > 0x1f && ch < 0x80) { if (cmd_args.len < sizeof(cmd_args.cmdline) - 1) { cmd_args.cmdline[cmd_args.len++] = ch; str_echo(&ch, 1); } } else if (ch == 0x0D || ch == 0x0A)//newline carriage return { char str[] = {0x0D, 0x0A}; cmd_args.cmdline[cmd_args.len++] = '/0'; str_echo(str, sizeof(str)); xSemaphoreGiveFromISR(xRxCompleteSemaphore, NULL); } }}
开发者ID:yangk,项目名称:FreeRTOS_BOARD_DEMO,代码行数:29,
示例2: mainint main(void){ // daemon(0,0); signal(SIGCLD, SIG_IGN); socklen_t cliaddr_len; int listenfd,connfd; listenfd = socket(AF_INET,SOCK_STREAM,0); bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SERV_PORT); int nREUSEADDR = 1; setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,(const char*)&nREUSEADDR,sizeof(int)); bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr)); listen(listenfd,20); printf("Accepting connections.../n"); while(1){ cliaddr_len = sizeof(cliaddr); if((connfd = accept(listenfd,(struct sockaddr *)&cliaddr,&cliaddr_len))<0){ if(errno == EINTR) continue; else{ perror("accept:"); exit(0); } } char is_long ; recv(connfd,&is_long,1,0); // printf("connfd is_long:%c/n",is_long); if(is_long == 'k') { int i; i = fork(); if(i == -1){ perror("fork error"); exit(1); }else if(i == 0){ close(listenfd); str_echo(connfd); exit(0); }else close(connfd); }else { str_echo(connfd); } }}
开发者ID:snowcrystall,项目名称:echoserver,代码行数:48,
示例3: mainint main(){ int listenfd, connfd; pid_t pid; socklen_t clilen; struct sockaddr_in servaddr, cliaddr; listenfd = socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SERV_PORT); bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr)); listen(listenfd, ACCEPTQ); signal(SIGCHLD, sig_chld); for(;;) { clilen = sizeof(cliaddr); connfd = accept(listenfd, (struct sockaddr*)&cliaddr, &clilen); if((pid = fork()) == 0) { close(listenfd); str_echo(connfd); exit(0); } close(connfd); }}
开发者ID:fitwu,项目名称:unp,代码行数:30,
示例4: mainint main(int argc, char **argv){ int serverSock, clientSock; struct sockaddr_in serverAddr, clientAddr; serverSock = socket(AF_INET, SOCK_STREAM, 0); bzero(&serverAddr, sizeof(serverAddr)); serverAddr.sin_family = AF_INET; serverAddr.sin_addr.s_addr = htonl(INADDR_ANY); serverAddr.sin_port = htons(5011); if (bind(serverSock,(struct sockaddr *)&serverAddr, sizeof(serverAddr)) < 0) { perror("bind error"); exit(1); } if (listen(serverSock, 0) < 0) { perror("listen error"); exit(0); } while(1) { int cliLen = sizeof(clientAddr); clientSock = accept(serverSock, (struct sockaddr*)&clientAddr, (socklen_t *)&cliLen); str_echo(clientSock); } return 0;}
开发者ID:chenshuchao,项目名称:practice,代码行数:33,
示例5: mainint main(void){ int sockfd,connfd; pid_t chldpid; socklen_t chldlen; struct sockaddr_in servaddr,cliaddr; sockfd=socket(AF_INET,SOCK_STREAM,0); bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family=AF_INET; servaddr.sin_addr.s_addr=htonl(INADDR_ANY); servaddr.sin_port=htons(PORT); bind(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr)); listen(sockfd,LISTENQ); signal(SIGCHLD,sig_chld); for(;;) { chldlen=sizeof(cliaddr); if( (connfd=accept(sockfd,(struct sockaddr*)&cliaddr,&chldlen))<0 ) { if(errno==EINTR) { printf("interupted sys call/n"); continue;// restart sys call by self; } } if( (chldpid=fork())==0) { close(sockfd); str_echo(connfd); exit(0); } close(connfd); }}
开发者ID:chunxiaomoli,项目名称:echoserv_client,代码行数:35,
示例6: mainint main( int argc, char** argv ) { int listenfd; struct sockaddr_in servaddr; listenfd = Socket( AF_INET, SOCK_STREAM, 0 ); bzero( &servaddr, sizeof( servaddr ) ); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl( INADDR_ANY ); servaddr.sin_port = htons( 7778 ); Bind( listenfd, (struct sockaddr*)&servaddr, sizeof( servaddr ) ); Listen( listenfd, 5 ); socklen_t clilen; struct sockaddr_in cliaddr; int connfd; pid_t childpid; for( ; ; ) { clilen = sizeof( cliaddr ); connfd = Accept( listenfd, ( struct sockaddr* )&cliaddr, &clilen ); if( ( childpid = Fork()) == 0 ) { Close( listenfd ); str_echo( connfd ); exit( 0 ); } Close( connfd ); }}
开发者ID:zendevelop,项目名称:code_samples,代码行数:29,
示例7: mainint main(int argc, const char *argv[]){ int listenfd, connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr, servaddr; listenfd = socket_r(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(argv[1]); servaddr.sin_port = htons(80); //void bind_r(int listening_socket, const struct sockaddr *addr, socklen_t addrlen, void *arg); bind_r(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr), (char *)argv[1]); //void listen_r(int sockfd, int backlog, void *arg); listen_r(listenfd, 10, (char *)argv[1]); for(;;){ clilen = sizeof(cliaddr); //int accept_r(int sockfd, struct sockaddr *addr, socklen_t *addrlen); connfd = accept_r(listenfd, (struct sockaddr *)&cliaddr, &clilen); if((childpid = fork_r()) == 0){ close_r(listenfd); str_echo(connfd); exit(0); } } close_r(connfd); return 0;}
开发者ID:sunqi08201329,项目名称:sunqi0207,代码行数:28,
示例8: mainint main(int argc,char *argv[]){ int listenfd,sockfd; pid_t pid; socklen_t len; struct sockaddr_un un; if(argc != 2) err_quit("usage server_un <pathname>"); memset(&un,0,sizeof(un)); un.sun_family = AF_LOCAL; strncpy(un.sun_path,argv[1],sizeof(argv[1])); sockfd = socket(AF_LOCAL,AF_STREAM,0); bind(listenfd,&un,SUN_LEN(&un)); Listen(listenfd,LISTENQ); for(;;){ if((sockfd=accept(listenfd,&un,&len))<0){ if(errno == EINTR) continue; else err_sys("accept error"); } if((pid=fork()) == 0) { Close(listenfd); str_echo(sockfd); exit(0); } Close(sockfd); }}
开发者ID:hu010354,项目名称:kaizer,代码行数:28,
示例9: mainint main(int argc,char **argv){ int listenfd,connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr,servaddr; listenfd = Socket(AF_INET,SOCK_STREAM,0); bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SERV_PORT); Bind(listenfd,&servaddr,sizeof(servaddr)); Listen(listenfd,20); signal(SIGCHLD,sig_chld); printf("server is listening/n"); for(;;) { clilen = sizeof(cliaddr); connfd = Accept(listenfd,&cliaddr,&clilen); if( (childpid = Fork() == 0) ) { Close(listenfd); str_echo(connfd); exit(0); } Close(connfd); }}
开发者ID:zz198808,项目名称:unp-1,代码行数:34,
示例10: mainint main(){ int listenfd, connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr, servaddr; listenfd = socket(AF_INET, SOCK_STREAM, 0); memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(9877); bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr)); listen(listenfd, LISTENQ); while (1) { clilen = sizeof(cliaddr); connfd = accept(listenfd, (struct sockaddr *)&cliaddr, &clilen); if ((childpid = fork()) == 0) { close(listenfd); str_echo(connfd); exit(0); } close(connfd); }}
开发者ID:lyyyuna,项目名称:durian_cake,代码行数:30,
示例11: mainint main(int argc, char const *argv[]){ int listenfd, connfd; struct sockaddr_in servaddr, cliaddr; int len; if (argc != 2) { fprintf(stderr, "usage: tcpserv <port>/n"); exit(1); } if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket error"); exit(1); } servaddr.sin_family = AF_INET; servaddr.sin_port = htons(atoi(argv[1])); servaddr.sin_addr.s_addr = htons(INADDR_ANY); if (bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0) { perror("bind error"); exit(1); } if (listen(listenfd, LISTENQ) < 0) { perror("listen error"); exit(1); } Signal(SIGCHLD, sig_chld); while (1) { len = sizeof(cliaddr); // pause(); if ((connfd = accept(listenfd, (struct sockaddr*)&cliaddr, &len)) < 0) { if (errno == EINTR) continue; perror("accept error"); exit(1); } if (fork() == 0) { close(listenfd); str_echo(connfd, &cliaddr); exit(0); } close(connfd); } return 0;}
开发者ID:yangmiemie,项目名称:books,代码行数:60,
示例12: mainint main(int argc, char **argv){ int listenfd, connfd; pid_t childpid; socklen_t clilen; struct sockaddr_un cliaddr, servaddr; void sig_child(int); listenfd = Socket(AF_LOCAL, SOCK_STREAM, 0); unlink(UNIXSTR_PATH); bzero(&servaddr, sizeof(servaddr)); servaddr.sun_family = AF_LOCAL; strcpy(servaddr.sun_path, UNIXSTR_PATH); Bind(listenfd, (SA *)&servaddr, sizeof(servaddr)); Listen(listenfd, LISTENQ); Signal(SIGCHLD, sigchld_waitpid); for ( ; ; ) { clilen = sizeof(cliaddr); connfd = Accept(listenfd, (SA *)&cliaddr, &clilen); if ((childpid = Fork()) == 0) { Close(listenfd); str_echo(connfd); exit(0); } Close(connfd); }}
开发者ID:crazy-canux,项目名称:cAPI,代码行数:34,
示例13: mainintmain(int argc, char **argv){ int listenfd, connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr, servaddr; listenfd = Socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SERV_PORT); Bind(listenfd, (SA *) &servaddr, sizeof(servaddr)); Listen(listenfd, LISTENQ); for ( ; ; ) { clilen = sizeof(cliaddr); connfd = Accept(listenfd, (SA *) &cliaddr, &clilen); if ( (childpid = Fork()) == 0) { /* child process */ Close(listenfd); /* close listening socket */ str_echo(connfd); /* process the request */ sleep(10); exit(0); } Close(connfd); /* parent closes connected socket */ }}
开发者ID:DavidYangfei,项目名称:unpbook,代码行数:32,
示例14: mainint main(int argc, char **argv){ int listenfd, connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr, servaddr; listenfd = Socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SERV_PORT); Bind(listenfd, (SA *) &servaddr, sizeof(servaddr)); Listen(listenfd, LISTENQ); for( ; ; ) { clilen = sizeof(cliaddr); /*connfd = Accept(listenfd, (SA *) &cliaddr, &clilen);*/ // handler break slow system call if ( (connfd = accept(listenfd, (SA *) &cliaddr, &clilen)) < 0) { if(errno == EINTR) continue; else err_sys("accept error"); } if( (childpid = Fork()) == 0) { Close(listenfd); str_echo(connfd); exit(0); } Close(connfd); }}
开发者ID:hackrole,项目名称:daily-program,代码行数:34,
示例15: mainint main(int argc, char **argv) { int listenfd, connfd; struct sockaddr_in servaddr, client_addr; char buff[MAXLINE]; time_t ticks; bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); /*for any interface on server */ servaddr.sin_port = htons(atoi(argv[1])); listenfd = socket(AF_INET, SOCK_STREAM, 0); bind(listenfd, (SA *)&servaddr, sizeof(servaddr)); listen(listenfd, LISTENQ); bzero(&client_addr, sizeof(client_addr)); signal(SIGCHLD, sig_chld); while (1) { int addr_len = sizeof(client_addr); connfd = accept(listenfd, (SA *)&client_addr, (socklen_t *)&addr_len); printf("IP address is: %s, ", inet_ntoa(client_addr.sin_addr)); printf("port is: %d/n", (int) ntohs(client_addr.sin_port)); pid_t pid; if ((pid = fork()) == 0) { /* child process */ close(listenfd); /* close listening socket */ str_echo(connfd); /* process the request */ exit (0); } close(connfd); /* parent closes connected socket */ } return 0;}
开发者ID:henryyang42,项目名称:NetworkProgramming,代码行数:34,
示例16: mainint main(int argc, char *argv[]){ int listenfd, connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr, servaddr; listenfd = Socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SERV_PORT); Bind(listenfd, (SA *)&servaddr, sizeof(servaddr)); Listen(listenfd, LISTENQ); while (1) { clilen = sizeof(cliaddr); connfd = Accept(listenfd, (SA *)&cliaddr, &clilen); if ((childpid = Fork()) == 0) { Close(listenfd); str_echo(connfd); exit(0); } Close(connfd); } return 0;}
开发者ID:NetWilliam,项目名称:unix-network-programming-bobo,代码行数:27,
示例17: mainint main(int argc,char **argv){ int listenfd,connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr,servaddr; listenfd=socket(AF_INET,SOCK_STREAM,0); if(listenfd<0) printf("error socket/n"); bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family=AF_INET; servaddr.sin_addr.s_addr=htonl(INADDR_ANY); servaddr.sin_port=htons(SERV_PORT); if(bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr))<0) printf("error bind/n"); if(listen(listenfd,LISTENQ)<0) printf("error linstn/n"); for(;;){ clilen=sizeof(cliaddr); if((connfd=accept(listenfd,(struct sockaddr*) &cliaddr,&clilen))<0){ printf("error accept"); } if((childpid=fork())==0){ close(listenfd); str_echo(connfd); exit(0); } close(connfd); }}
开发者ID:wbingeek,项目名称:GeekMessaging,代码行数:35,
示例18: mainint main(int argc, char **argv) { int listenfd, connfd, status; pid_t childpid; char line[MAXLINE]; socklen_t clilen; struct sockaddr_in servaddr; struct sockaddr_in cliaddr; listenfd=socket(AF_INET, SOCK_STREAM,0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family=AF_INET; servaddr.sin_addr.s_addr=htonl(INADDR_ANY); servaddr.sin_port=htons(PORT); bind(listenfd, (SA *)&servaddr, sizeof(servaddr)); listen(listenfd, LISTENQ); for( ;;) { clilen = sizeof(cliaddr); connfd=accept(listenfd, (SA *)&cliaddr, &clilen); printf("connection from %s, port %d/n", inet_ntoa(cliaddr.sin_addr), ntohs(cliaddr.sin_port)); childpid = fork(); if (childpid == 0) { close(listenfd); str_echo(connfd); exit(0); } else { signal(SIGCHLD, sig_chld); } close(connfd); }}
开发者ID:hydai,项目名称:SocketProgramming,代码行数:33,
示例19: mainint main(int argc, char **argv){ int listenfd,connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr,servaddr; listenfd = socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SERV_PORT); bind(listenfd, (SA *)&servaddr, sizeof(servaddr));printf("start listening.../n"); listen(listenfd, LISTENQ); for( ; ; ) { clilen = sizeof(cliaddr); connfd = accept(listenfd, (SA *)&cliaddr, &clilen); if( (childpid = fork()) == 0 ) { close(listenfd);//printf("i am in clild process/n"); str_echo(connfd); exit(0); } close(connfd); }}
开发者ID:onesafe,项目名称:unp-studying,代码行数:33,
示例20: doitstatic void* doit(void* arg){ Pthread_detach(pthread_self()); str_echo((int)arg); Close((int)arg); return NULL;}
开发者ID:ldjbenben,项目名称:GameServer,代码行数:7,
示例21: mainint main(int argc, char **argv){ int listenfd, connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr, servaddr; listenfd = socket (AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl (INADDR_ANY); // for any interface servaddr.sin_port = htons (SERV_PORT); //user define bind(listenfd, (__SOCKADDR_ARG) &servaddr, sizeof(servaddr)); listen(listenfd, LISTENQ); for ( ; ; ) { clilen = sizeof(cliaddr); connfd = accept(listenfd, (__SOCKADDR_ARG) &cliaddr, &clilen); if ( (childpid = fork()) == 0) { /* child process */ close(listenfd); /* close listening socket */ str_echo(connfd); /* process the request */ exit (0); //end child process } close(connfd); /* parent closes connected socket */ } }
开发者ID:Q-Max,项目名称:npnp2015,代码行数:26,
示例22: mainintmain(int argc, char **argv){ int listenfd, connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr, servaddr; void sig_chld(int); // 处理信号量函数, 这里在Mac OS X系统上编译不过 listenfd = Socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SERV_PORT); Bind(listenfd, (SA *) &servaddr, sizeof(servaddr)); Listen(listenfd, LISTENQ); Signal(SIGCHLD, sig_chld); // 捕获`SIGCHLD`,并调用`wait`或`waitpid`来处理僵死进程 for ( ; ; ) { clilen = sizeof(cliaddr); connfd = Accept(listenfd, (SA *) &cliaddr, &clilen); if ( (childpid = Fork()) == 0) { /* child process */ Close(listenfd); /* close listening socket */ str_echo(connfd); /* process the request */ exit(0); } Close(connfd); /* parent closes connected socket */ }}
开发者ID:Yweima,项目名称:BookNotes,代码行数:34,
示例23: mainintmain(int argc, char **argv){ int sock_fd,msg_flags,connfd,childpid; sctp_assoc_t assoc; char readbuf[BUFFSIZE]; struct sockaddr_in servaddr, cliaddr; struct sctp_sndrcvinfo sri; struct sctp_event_subscribe evnts; socklen_t len; size_t rd_sz; sock_fd = Socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SERV_PORT); Bind(sock_fd, (SA *) &servaddr, sizeof(servaddr)); bzero(&evnts, sizeof(evnts)); evnts.sctp_data_io_event = 1; Setsockopt(sock_fd, IPPROTO_SCTP, SCTP_EVENTS, &evnts, sizeof(evnts)); Listen(sock_fd, LISTENQ); printf("Start waiting.../n");/* include mod_servfork */ for ( ; ; ) { len = sizeof(struct sockaddr_in); rd_sz = Sctp_recvmsg(sock_fd, readbuf, sizeof(readbuf), (SA *)&cliaddr, &len, &sri,&msg_flags); Sctp_sendmsg(sock_fd, readbuf, rd_sz, (SA *)&cliaddr, len, sri.sinfo_ppid, sri.sinfo_flags, sri.sinfo_stream, 0, 0); assoc = sctp_address_to_associd(sock_fd,(SA *)&cliaddr,len); if((int)assoc == 0){ err_ret("Can't get association id"); continue; } connfd = sctp_peeloff(sock_fd,assoc); if(connfd == -1){ err_ret("sctp_peeloff fails"); continue; } if((childpid = fork()) == 0) { Close(sock_fd); str_echo(connfd); exit(0); } else { Close(connfd); } }/* end mod_servfork */}
开发者ID:nightfly19,项目名称:renyang-learn,代码行数:59,
示例24: mainint main(){ int listenfd,connectfd; struct sockaddr_in server,client; pid_t child_pid; socklen_t clilen; if((listenfd=socket(AF_INET,SOCK_STREAM,0))<0) { perror("Socket not created"); } else { printf("Socket created/n"); } bzero(&server,sizeof(server)); server.sin_family=AF_INET; server.sin_addr.s_addr=htonl(INADDR_ANY); server.sin_port=htons(SERV_PORT); if((bind(listenfd,(struct sockaddr*)&server,sizeof(server)))<0) { perror("Bind failed"); } else { printf("Bind successful /n"); } listen(listenfd,5); signal(SIGCHLD,sig_chld); /*Daemon :D*/ for(;;) { //clilen=sizeof(client); if( (connectfd=accept(listenfd,(struct sockaddr*) NULL,NULL) )<0) { if(errno == EINTR) /* Interrupted system call */ continue; else err_sys("accept error"); } if((child_pid=fork())==0) { close(listenfd); str_echo(connectfd); exit(0); } close(connectfd); } }
开发者ID:nancygoel62,项目名称:BCS-356-Network-Programming,代码行数:59,
示例25: doitstatic void *doit(void *arg){ Pthread_detach(pthread_self()); str_echo((int) arg); /* same function as before */ Close((int) arg); /* done with connected socket */ return(NULL);}
开发者ID:tcharding,项目名称:self_learning,代码行数:8,
示例26: mainintmain(int argc, char **argv){ int listenfd, connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr, servaddr; void sig_chld(int); if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket error"); exit(1); } bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SERV_PORT); if (bind(listenfd, (SA *) &servaddr, sizeof(servaddr)) < 0) { perror("bind error"); exit(1); } if (listen(listenfd, LISTENQ) < 0) { perror("listen error"); exit(1); } if (signal(SIGCHLD, sig_chld) == SIG_ERR) { perror("signal error"); exit(1); } for ( ; ; ) { clilen = sizeof(cliaddr); if ((connfd = accept(listenfd, (SA *) &cliaddr, &clilen)) < 0) { perror("accept error"); exit(1); } if ( (childpid = fork()) < 0) { perror("fork error"); exit(1); } else if (childpid == 0) { /* child process */ if (close(listenfd) == -1) { /* close listening socket */ perror("close error"); exit(1); } str_echo(connfd); /* process the request */ exit(0); } if (close(connfd) == -1) { /* parent closes connected socket */ perror("close error"); exit(1); } }}
开发者ID:hechenyu,项目名称:unix_code,代码行数:58,
示例27: mainintmain(int argc, char **argv){ int listenfd, connfd; pid_t childpid; socklen_t clilen; struct sockaddr_in cliaddr, servaddr; uint16_t port; if (argc != 2) { usage(argv[0]); return EXIT_FAILURE; } port = atoi(argv[1]); listenfd = Socket( AF_INET, SOCK_STREAM, 0); bzero( &servaddr, sizeof( servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(port); /* SO_REUSEADDR allows a new server to be started * on the same port as an existing server that is * bound to the wildcard address, as long as each * instance binds a different local IP address. * This is common for a site hosting multiple HTTP * servers using the IP alias technique */ int reuseaddr_on = 1; if( setsockopt( listenfd, SOL_SOCKET, SO_REUSEADDR, &reuseaddr_on, sizeof( reuseaddr_on)) < 0) { // log } Bind( listenfd, (SA *) &servaddr, sizeof( servaddr)); Listen( listenfd, LISTENQ); Signal( SIGCHLD, sig_chld); for ( ; ; ) { clilen = sizeof(cliaddr); if ( ( connfd = accept( listenfd, (SA *) &cliaddr, &clilen)) < 0) { if ( errno == EINTR) continue; /* back to for() */ else err_sys( "accept error"); } if ( ( childpid = Fork()) == 0) { /* child process */ Close( listenfd); /* close listening socket */ str_echo( connfd); /* process the request */ exit( 0); } Close( connfd); /* parent closes connected socket */ } return 0;}
开发者ID:bharathvu,项目名称:unix_networking_projects,代码行数:58,
示例28: doitvoid *doit(void *arg){ long val = (long)arg; pthread_detach(pthread_self()); str_echo(val); close(val); return NULL;}
开发者ID:irays,项目名称:test_repository,代码行数:9,
注:本文中的str_echo函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ str_empty函数代码示例 C++ str_data函数代码示例 |