📄 00000000.htm
字号:
if (nbyt > 0) <BR> return 0; <BR> <BR> /*setsid();*/ <BR> <BR> while((csock = accept(lsock,&caddr,&caddrlen)) != -1) <BR> { <BR> perror("+ACCEPT LSOCK"); <BR> cfile = fdopen(csock,"r+"); <BR> if ((nbyt = fork()) == -1) <BR> { <BR> fprintf(cfile,"500 fork %s\n",strerror(errno)); <BR> shutdown(csock,2); <BR> fclose(cfile); <BR> continue; <BR> } <BR> <BR> if (nbyt == 0) <BR> goto gotsock; <BR> <BR> fclose(cfile); <BR> while (waitpid(-1,NULL,WNOHANG) > 0); <BR> perror("+WAITPID OK"); <BR> } <BR> <BR> return 20; <BR> <BR> gotsock: <BR> perror("GOTSOCK!"); <BR> osock2=csock2=-1; <BR> if ((osock = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP)) == -1) <BR> { <BR> fprintf(cfile,"500 socket %s\n",strerror(errno)); <BR> goto quit1; <BR> } <BR> <BR> oaddr.sin_family = h->h_addrtype; <BR> oaddr.sin_port=htons(oport); <BR> memcpy(&oaddr.sin_addr,h->h_addr,h->h_length); <BR> if (connect(osock,&oaddr,sizeof(oaddr))) <BR> { <BR> fprintf(cfile,"500 connect :%X:%u:%s\n", <BR> oaddr.sin_addr.s_addr,oport,strerror(errno)); <BR> goto quit1; <BR> } <BR> <BR>back: <BR> while(1) <BR> { <BR> perror("+FD_ZERO"); <BR> FD_ZERO(&fdse); <BR> FD_ZERO(&fdsr); <BR> FD_SET(csock,&fdse); <BR> FD_SET(osock,&fdse); <BR> FD_SET(csock,&fdsr); <BR> FD_SET(osock,&fdsr); <BR> <BR> if(csock2 != -1) <BR> { <BR> perror("+SELECT CSOCK2"); <BR> FD_SET(csock2,&fdse); <BR> FD_SET(csock2,&fdsr); <BR> } <BR> <BR> if(osock2 != -1) <BR> { <BR> perror("+SELECT OSOCK2"); <BR> FD_SET(osock2,&fdse); <BR> FD_SET(osock2,&fdsr); <BR> } <BR> perror("+SELECT START"); <BR> <BR> if (select(20,&fdsr,NULL,&fdse,NULL) == -1) <BR> { <BR> fprintf(cfile,"500 select: %s\n",strerror(errno)); <BR> goto quit2; <BR> } <BR> perror("+SELECT END"); <BR> <BR> if (FD_ISSET(osock,&fdsr) || FD_ISSET(osock,&fdse)) <BR> { <BR> perror("+OSOCK READ"); <BR> if ((nbyt = read(osock,buf,4096)) <= 0) <BR> goto quit2; <BR> if (write(csock,buf,nbyt) <=0) <BR> goto quit2; <BR> } <BR> <BR> if (csock2 != -1 && (FD_ISSET(csock2,&fdsr) || FD_ISSET(csock2,&fdse))) <BR> { <BR> perror("+CSOCK2 READ"); <BR> if ((nbyt = read(csock2,buf,4096)) <= 0) <BR> goto quit3; <BR> if (write(osock2,buf,nbyt) <= 0) <BR> goto quit3; <BR> } <BR> <BR> if (osock2 != -1 && (FD_ISSET(osock2,&fdsr) || FD_ISSET(osock2,&fdse))) <BR> { <BR> perror("+OSOCK2 READ"); <BR> if (csock2 != -1) <BR> { <BR> if ((nbyt = read(osock2,buf,4096)) <= 0) <BR> goto quit3; <BR> if (write(csock2,buf,nbyt) <= 0) <BR> goto quit3; <BR> } <BR> else <BR> { <BR> perror("+OSOCK2 ACCEPT"); <BR> caddrlen=sizeof(caddr); <BR> if ((sock=accept(osock2,&caddr,&caddrlen)) == -1) <BR> goto quit3; <BR> <BR> close(osock2); <BR> osock2=sock; <BR> <BR> caddr.sin_family=AF_INET; <BR> caddr.sin_addr.s_addr=cip; <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -