亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sp2.c

?? linux網(wǎng)絡(luò)編程的函數(shù),是基礎(chǔ),很實(shí)用
?? C
字號:
/*******************************************************************************This program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2 of the License, or(at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA*******************************************************************************//*******************************************************************************Program: sp.cDescription: a smart proxyAuthor: Alan Chen (ariesram@may10.ca)Date: July 18, 2001*******************************************************************************/
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/wait.h>
#include <unistd.h>
#include <netinet/in.h>
#define ERRLOG "./sp.log"
int do_proxy(int infd, char* addr, int port);
int max(int i, int j);
void waitchild(int);
void version();
void usage();
void daemonize();
void p_error(const char * err_msg);
int main(int argc, char** argv) 
{
	struct sockaddr_in servaddr, clientaddr;
	int listenfd, connfd;
	int clientlen;pid_t chpid;
	int service_port = 0, remote_port = 0;
	char remote_addr[17];
	const char optstring[] = "s:r:p:vh";
	int opt;
	extern char *optarg;
	extern int optind, opterr, optopt;
	extern FILE *stderr;
	memset(remote_addr, 0, 17);
	if( argc == 2 ) 
		{while( (opt = getopt(argc, argv, optstring)) != -1 ) 
			{
				if( opt == 'v' ) {version();exit(0);}
				else if ( opt == 'h' ) {usage();exit(0);}
					else {printf("type sp -h for help message");usage();exit(0);}}}
						else {while( (opt = getopt(argc, argv, optstring)) != -1 ) 
							{switch(opt) {
								case 's':service_port = atoi(optarg);break;
								case 'r':memcpy(remote_addr, optarg, strlen(optarg));remote_addr[strlen(remote_addr)] = '';break;
								case 'p':remote_port = atoi(optarg);break;default:usage();exit(0);}}}
						if( service_port == 0' 'remote_port == 0' 'remote_addr[0] == '') {usage();exit(0);}
			daemonize();
			bzero(&servaddr, sizeof(servaddr));
			servaddr.sin_family = AF_INET;
			servaddr.sin_port = htons(service_port);
			servaddr.sin_addr.s_addr = INADDR_ANY;
			listenfd = socket(AF_INET, SOCK_STREAM, 0);
			if(listenfd < 0) {p_error("socket error");exit(-1);}
			if( bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0 ) {p_error("bind error");exit(-1);}
			if( listen(listenfd, 5) < 0 ) {p_error("listen error");exit(-1);}
			signal(SIGCHLD, waitchild);
			for(;;) 
			{
				connfd = accept( listenfd, (struct sockaddr *)&clientaddr,&clientlen );
				if( connfd < 0 ) {p_error("accept error");exit(-1);}
				if( (chpid = fork()) == -1 ) {p_error("fork error");exit(-1);}
				if( chpid == 0 ) {close(listenfd);do_proxy(connfd, remote_addr, remote_port);exit(0);}
				if( chpid > 0 ) {close(connfd);}
			}
			exit(0);
}
int do_proxy(int infd, char *addr, int port) 
		{
			struct sockaddr_in rout;
			int outfd;int maxfd;
			int count = 65535;
			int n;
			fd_set set;
			char buf[count];
			bzero(&rout, sizeof(rout));
			rout.sin_family = AF_INET;
			rout.sin_port = htons(port);
			rout.sin_addr.s_addr = inet_addr(addr);
			if( (outfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) 
				{p_error("socket error");exit(-1);}
			if( connect(outfd, (struct sockaddr *)&rout, sizeof(rout)) < 0 ) {p_error("connect error");exit(-1);}
			while(1) 
			{
				FD_ZERO(&set);
				FD_SET(infd, &set);
				FD_SET(outfd, &set);
				maxfd = max(outfd, infd);
				if( select(maxfd   1, &set, NULL, NULL, NULL) < 0 ) {perror("select error:");exit(-1);}
				if( FD_ISSET(infd, &set) ) 
					{n = read(infd, (void *)buf, count);
						if( n <= 0)break;
						if( write(outfd, (const void *)buf, n) != n ) {p_error("write error");continue;}}
						if( FD_ISSET(outfd, &set) ) {n = read(outfd, (void *)buf, count);
							if( n <= 0)break;
							if( write(infd, (const void *)buf, n) != n ) {p_error("write error");continue;}
								}
			}
			close(infd);
			close(outfd);
}
int max(int i, int j) 
{
	return i>j?i:j;
}
void waitchild(int signo) 
{
	int status;
	pid_t childpid;
	if( (childpid = waitpid(-1, &status, WNOHANG)) < 0 ) {p_error("wait error");exit(1);}return;
}
void version() 
{
	printf("GNU SP 1.0Copyright 2001 Aryes Software Studio, Inc.SP is free software, covered by the GNU General Public License, and you arewelcome to change it and/or distribute copies of it under certain conditions.");
}
void usage() 
{
	printf("This is the GNU smart proxy daemon. Usage:sp -s service_port -r remote_address -p remote_portsp -vsp -hoption:-s specify service port of sp-r specify remote address which sp will connect-p specify remote port while sp will connect to-v display version message-h display this help messageReport bugs to <ariesram@may10.ca>.");
}
void daemonize() 
{
	int i;
	#ifndef _DEBUGsignal(SIGINT, SIG_IGN);
	#endifsignal(SIGHUP, SIG_IGN);
	signal(SIGABRT, SIG_IGN);
	signal(SIGSTOP, SIG_IGN);
	signal(SIGCHLD, SIG_IGN);
	#ifndef _DEBUG
	if (fork() != 0)exit(0);
		setsid();
		for (i = 256; i >= 0; i --)
		#endif
		#ifdef _DEBUG
		for (i = 256; i >= 3; i --)
		#endif
		close(i);
}
void p_error(const char * err_msg)
{
	FILE * fp;
	#ifdef _DEBUGprintf("%s", err_msg);
	#endif
	fp = fopen(ERRLOG, "a");
	if (fp == NULL)return;
	fprintf(fp, "%s", err_msg);
	fclose(fp);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品久久99久久在免费线 | 欧美日韩一区在线| 粉嫩在线一区二区三区视频| 韩日欧美一区二区三区| 看片的网站亚洲| 久久国产夜色精品鲁鲁99| 蜜臀av在线播放一区二区三区| 日韩精品免费视频人成| 日本欧美一区二区三区乱码 | 色狠狠综合天天综合综合| proumb性欧美在线观看| 成a人片国产精品| 99视频热这里只有精品免费| 99热在这里有精品免费| 色综合夜色一区| 色av成人天堂桃色av| 欧美日韩在线一区二区| 欧美精品久久久久久久多人混战| 欧美区一区二区三区| 在线播放欧美女士性生活| 日韩一区二区三区免费看| 91精选在线观看| 日韩美女主播在线视频一区二区三区| 日韩欧美国产1| 久久久久久久久99精品| 国产精品污污网站在线观看| 亚洲欧洲国产专区| 亚洲成人免费看| 久久国产尿小便嘘嘘尿| 成人永久aaa| 91精彩视频在线| 日韩欧美一级二级| 国产免费久久精品| 亚洲综合在线视频| 麻豆专区一区二区三区四区五区| 国产精品996| 91久久人澡人人添人人爽欧美| 欧美视频在线不卡| 精品国产91亚洲一区二区三区婷婷| 久久精品无码一区二区三区| 亚洲天堂2016| 免费视频一区二区| 99久久婷婷国产综合精品| 欧美日韩精品福利| 久久网站最新地址| 亚洲精品视频在线观看网站| 一本大道av伊人久久综合| 这里只有精品免费| 国产精品系列在线| 午夜精品福利久久久| 国产精品99久久久久久似苏梦涵| 色视频成人在线观看免| 精品美女一区二区| 亚洲精品国产精品乱码不99| 蜜乳av一区二区| 91偷拍与自偷拍精品| 欧美一区二区美女| 亚洲视频一区二区在线观看| 免费成人在线观看| 91老司机福利 在线| 精品国产一区二区三区av性色| 一区二区在线电影| 国产99久久久久| 在线电影一区二区三区| 最新国产成人在线观看| 久久国产精品露脸对白| 在线观看国产日韩| 中文幕一区二区三区久久蜜桃| 日日欢夜夜爽一区| 色呦呦网站一区| 中文字幕av一区二区三区免费看| 日韩电影免费一区| 色一情一乱一乱一91av| 欧美韩国日本不卡| 九九精品一区二区| 69堂国产成人免费视频| 亚洲免费电影在线| www.欧美日韩| 久久精品夜色噜噜亚洲a∨| 青青草成人在线观看| 日本福利一区二区| 亚洲人成网站影音先锋播放| 国产精品一区二区黑丝| 日韩免费看网站| 肉丝袜脚交视频一区二区| 色香色香欲天天天影视综合网| 欧美国产日本韩| 国产精品一二三四五| 欧美电视剧在线观看完整版| 日日夜夜精品视频天天综合网| 日本道免费精品一区二区三区| 国产精品视频观看| 国产成人午夜99999| 久久这里只有精品视频网| 久久国内精品视频| 欧美电视剧在线看免费| 美女脱光内衣内裤视频久久网站| 6080国产精品一区二区| 亚洲成人av一区二区| 欧美丝袜丝nylons| 亚洲成av人综合在线观看| 欧美三级一区二区| 亚洲成a人v欧美综合天堂下载| 欧洲精品中文字幕| 亚洲国产成人av好男人在线观看| 日本精品一区二区三区四区的功能| 国产精品九色蝌蚪自拍| 97精品视频在线观看自产线路二| 国产精品久久久久三级| av网站免费线看精品| 日韩伦理av电影| 色丁香久综合在线久综合在线观看| 一区二区三区日韩欧美| 欧美亚洲图片小说| 日韩国产欧美视频| 91精品国产品国语在线不卡| 毛片av中文字幕一区二区| 337p粉嫩大胆色噜噜噜噜亚洲| 久久精品国产99久久6| 久久久影院官网| av电影天堂一区二区在线| 亚洲精品视频免费看| 欧美日韩国产美| 美女性感视频久久| 久久午夜老司机| 91婷婷韩国欧美一区二区| 亚洲永久免费视频| 欧美一级久久久| 国产精品一区二区黑丝| 亚洲婷婷在线视频| 欧美日韩一级大片网址| 久久成人久久鬼色| 国产精品视频你懂的| 日本高清成人免费播放| 日本特黄久久久高潮| 国产日韩一级二级三级| 99re免费视频精品全部| 亚洲va天堂va国产va久| 精品国产精品一区二区夜夜嗨| 成人性生交大片免费看在线播放| 亚洲美女一区二区三区| 欧美一区二区三区爱爱| 成人一区二区三区视频| 天天亚洲美女在线视频| 久久久久久久久久久电影| 色婷婷久久久久swag精品| 美女视频免费一区| 国产精品福利一区二区三区| 欧美日韩国产另类一区| 国产成人小视频| 亚洲成人激情社区| 日本一区二区三区在线不卡| 欧美日韩一级黄| 丁香一区二区三区| 日本不卡一区二区三区| 中文字幕在线不卡| 日韩你懂的在线观看| 97久久精品人人爽人人爽蜜臀 | 成人av网址在线| 丝袜美腿亚洲综合| 国产精品―色哟哟| 欧美一级高清大全免费观看| 99国产精品久| 国内精品久久久久影院薰衣草| 一区二区三区在线高清| 国产亚洲欧美日韩在线一区| 欧美乱熟臀69xxxxxx| 99re亚洲国产精品| 国产一区美女在线| 日韩中文字幕区一区有砖一区| 久久99精品一区二区三区三区| 一区二区免费在线播放| 亚洲免费在线电影| 久久99精品国产麻豆婷婷| 亚洲精品中文在线影院| 欧美精品一区二区蜜臀亚洲| 欧美色中文字幕| 99久久婷婷国产综合精品| 九九九精品视频| 日韩精品一区第一页| 一区二区视频在线| 国产日韩欧美电影| 精品国产乱码久久久久久图片| 欧美三级在线播放| 91丨porny丨在线| 粉嫩av一区二区三区| 另类调教123区 | 蜜桃视频一区二区| 亚洲午夜电影在线观看| 日韩毛片视频在线看| 欧美韩日一区二区三区| 久久久.com| 久久亚区不卡日本| 2023国产精品| 日韩美女主播在线视频一区二区三区 | 美脚の诱脚舐め脚责91| 日韩精品91亚洲二区在线观看| 一级日本不卡的影视| 亚洲久草在线视频| 自拍偷在线精品自拍偷无码专区|