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

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

?? 簡單代理服務器c代碼實現(xiàn)(solaris).txt

?? 簡單代理服務器C代碼實現(xiàn)(SOLARIS)
?? TXT
字號:



            簡單代理服務器C代碼實現(xiàn)(SOLARIS) 

              作者:無可非議

            #include <stdio.h>  
            #include <sys/types.h>  
            #include <sys/socket.h>  
            #include <netinet/in.h>  
            #include <signal.h> 
            #include <arpa/inet.h>  
            #include <netdb.h>  
            #include <sys/wait.h> 
            #include <unistd.h> 
            #include <string.h> 
            #include <stdlib.h> 
            #include <pthread.h> 
            #include <sys/stat.h> 

            int m_MainId = 0; //主進程ID 
            int m_ListenSocket = 0; //偵聽套接字 
            char m_ConnectAddr[256] = {0}; //目標地址 
            char m_ConnectPort[256] = {0}; //目標端口 

            /*  
            ** 函數(shù)名稱: GetListenSocket 
            ** 函數(shù)功能: 生成偵聽套接字  
            ** 傳入?yún)?shù): Port : 偵聽端口 
            ** 傳出參數(shù): 無 
            ** 引用函數(shù): 無 
            ** 返回值 : 偵聽套接字,為0時表示生成套接字失敗,其他為套接字句柄 
            ** 備注 : 無 
            */ 
            int GetListenSocket(int Port) 
            { 
            struct sockaddr_in m_LisAddr = {0};  
            int m_Socket = 0; 
            int m_AddrLen = sizeof(struct sockaddr_in); 

            //配置端口信息 
            m_LisAddr.sin_family = AF_INET;  
            m_LisAddr.sin_port = htons(Port);  
            m_LisAddr.sin_addr.s_addr = INADDR_ANY;  

            //創(chuàng)建套接字 
            if ((m_Socket = socket(AF_INET,SOCK_STREAM,0)) < 0 )  
            {  
            //創(chuàng)建套接字失敗 
            return 0;  
            }  

            //綁定套接字 
            if(bind(m_Socket, (sockaddr*)&m_LisAddr , m_AddrLen) < 0 )  
            {  
            //綁定套接字失敗 
            close(m_Socket); 
            return 0; 
            }  

            //偵聽套接字 
            if(listen(m_Socket,5))  
            {  
            //偵聽套接字失敗 
            close(m_Socket); 
            return 0; 
            }  

            //偵聽套接字生成成功 
            return m_Socket; 
            } 

            /*  
            ** 函數(shù)名稱: GetConnectSocket 
            ** 函數(shù)功能: 生成連接套接字  
            ** 傳入?yún)?shù): pServerAddr : 連接地址 pServerPort : 連接端口 
            ** 傳出參數(shù): 無 
            ** 引用函數(shù): 無 
            ** 返回值 : 連接套接字,為0時表示生成套接字失敗,其他為套接字句柄 
            ** 備注 : 無 
            */ 
            int GetConnectSocket(char* pServerAddr,char* pServerPort) 
            { 
            struct sockaddr_in m_ServerAddr = {0};  
            int m_AddrLen = sizeof(struct sockaddr_in); 
            int m_Socket = 0; 

            //初始化連接信息 
            m_ServerAddr.sin_addr.S_un.S_addr = inet_addr(pServerAddr); 
            m_ServerAddr.sin_port = htons(atoi(pServerPort));  
            m_ServerAddr.sin_family = AF_INET;  

            //創(chuàng)建發(fā)送套接字 
            m_Socket = socket(AF_INET,SOCK_STREAM,0); 
            if(m_Socket <= 0) 
            { 
            //失敗 
            return NULL; 
            } 

            //連接客戶計算機 
            if(connect(m_Socket,(sockaddr*)&m_ServerAddr,m_AddrLen) < 0 )  
            {  
            close(m_Socket);  
            return NULL; 
            } 

            //連接成功 
            return m_Socket; 
            } 

            /*  
            ** 函數(shù)名稱: TransSocket 
            ** 函數(shù)功能: 完成套接字數(shù)據(jù)轉(zhuǎn)發(fā)  
            ** 傳入?yún)?shù): m_SendSocket : 發(fā)送套接字 m_RecvSocket : 接收套接字 
            ** 傳出參數(shù): 無 
            ** 引用函數(shù): 無 
            ** 返回值 : 無 
            ** 備注 : 逆反完成全雙工 
            */ 
            void TransSocket(int m_SendSocket,int m_RecvSocket)  
            {  
            char m_Buf[512 * 1024] = {0}; 
            int ret = 0; 
            fd_set readset; 
            struct timeval tm = {0}; 
            tm.tv_sec = 3600 * 24; 

            FD_ZERO(&readset); 
            FD_SET(m_RecvSocket,&readset); 

            while(1) 
            { 
            if((select(m_RecvSocket + 1,&readset,NULL,NULL,&tm)  
            <= 0)) 
            { 
            //出錯 
            break; 
            } 
            if(!FD_ISSET(m_RecvSocket,&readset)) continue; 

            ret = recv(m_RecvSocket,m_Buf,512 * 1024 - 1,0); 
            if(ret < 0) 
            { 
            //出錯 
            break; 
            } 
            send(m_SendSocket,m_Buf,ret,0); 
            } 
            close(m_SendSocket); 
            close(m_RecvSocket); 
            }  

            /*  
            ** 函數(shù)名稱: SocketTrans 
            ** 函數(shù)功能: 工作主函數(shù),完成數(shù)據(jù)轉(zhuǎn)發(fā),新進程啟動  
            ** 傳入?yún)?shù): m_SendSocket : 發(fā)送套接字 m_RecvSocket : 接收套接字 
            ** 傳出參數(shù): 無 
            ** 引用函數(shù): 無 
            ** 返回值 : 無 
            ** 備注 : 逆反完成全雙工 
            */ 
            void SocketTrans() 
            { 
            struct sockaddr_in m_WorkAddr = {0};  
            int m_191Socket = 0; 
            int m_147socket = 0; 
            int m_WorkAddrLen = 0; 

            //開始任務執(zhí)行 
            while(1)  
            {  
            //接受147的連接 
            m_WorkAddrLen = sizeof(struct sockaddr_in);  
            m_147socket = accept(m_ListenSocket,  
            (sockaddr*)&m_WorkAddr , &m_WorkAddrLen);  

            //檢查套接字合法性 
            if(m_147socket < 0) continue; 

            //連接191 
            m_191Socket = GetConnectSocket(m_ConnectAddr,m_ConnectPort); 
            if(m_191Socket == NULL) 
            { 
            close(m_147socket); 
            continue; 
            } 

            int ret = fork(); 
            if(ret < 0) 
            { 
            //建立新進程失敗 
            printf("致命錯誤,無法建立新進程!\n"); 
            fflush(stdout); 
            close(m_191Socket); 
            close(m_147socket); 
            break; 
            } 
            else if(ret == 0) 
            { 
            //關(guān)閉原來端口 
            close(m_ListenSocket); 

            //建立二次子進程,防止僵尸進程 
            ret = fork(); 
            if(ret < 0) 
            { 
            close(m_191Socket); 
            close(m_147socket); 
            _exit(0); 
            } 
            else if(ret == 0) 
            { 
            //接收進程 
            TransSocket(m_191Socket,m_147socket);  
            _exit(0); 
            } 
            ret = fork(); 
            if(ret < 0) 
            { 
            close(m_191Socket); 
            close(m_147socket); 
            _exit(0); 
            } 
            else if(ret == 0) 
            { 
            //發(fā)送進程 
            TransSocket(m_147socket,m_191Socket); 
            _exit(0); 
            } 
            close(m_191Socket); 
            close(m_147socket); 
            _exit(0); 
            } 

            //等待子線程結(jié)束 
            close(m_191Socket); 
            close(m_147socket); 
            waitpid(ret,NULL,0); 
            }  
            } 

            /*  
            ** 函數(shù)名稱: sig_usr 
            ** 函數(shù)功能: 進程信號處理函數(shù)  
            ** 傳入?yún)?shù): 無 
            ** 傳出參數(shù): 無 
            ** 引用函數(shù): 無 
            ** 返回值 : 無 
            ** 備注 : 處理進程終止事件 
            */ 
            static void sig_usr(int signo) 
            { 
            close(m_ListenSocket); 
            if(m_MainId == getpid()) 
            kill(0,SIGKILL); 
            exit(0); 
            } 

            static void sig_ign(int signo) 
            { 
            fprintf(stderr,"signal %d catched ,ignoring\n",signo); 
            } 

            int daemon_init() 
            { 
            pid_t pid; 
            if((pid=fork())<0){ 
            return -1; 
            }else if(pid!=0){ 
            exit(0); 
            } 
            setsid(); 
            umask(0); 
            return 0; 
            } 

            /*  
            ** 函數(shù)名稱: main 
            ** 函數(shù)功能: 進程主函數(shù)  
            ** 傳入?yún)?shù): 無 
            ** 傳出參數(shù): 無 
            ** 引用函數(shù): MakeFilePath,GetMyInitInfo,SocketTrans 
            ** 返回值 : 無 
            ** 備注 : 為客戶接收進程主函數(shù) 
            */ 
            int main(int argc,char* argv[])  
            {  
            //檢查參數(shù)合法性 
            if(argc != 4) 
            { 
            printf("格式:本地端口 目的地址 目的端口\n"); 
            fflush(stdout); 
            return 0; 
            } 

            daemon_init(); 

            //登記信號事件 
            signal(SIGTERM,sig_usr); 
            signal(SIGINT,sig_usr); 
            signal(SIGQUIT,sig_usr); 
            signal(SIGPIPE,sig_ign); 
            signal(SIGALRM,sig_ign); 
            signal(SIGQUIT,sig_ign); 
            signal(SIGFPE,sig_ign); 
            signal(SIGILL,sig_ign); 
            signal(SIGPIPE,sig_ign); 
            signal(SIGSEGV,sig_ign); 
            signal(SIGTRAP,sig_ign); 
            signal(SIGTSTP,sig_ign); 

            //取參數(shù) 
            strcpy(m_ConnectAddr,argv[2]); 
            strcpy(m_ConnectPort,argv[3]); 

            //獲取偵聽套接字 
            m_ListenSocket = GetListenSocket(atoi(argv[1])); 
            if(m_ListenSocket == 0) 
            { 
            printf("偵聽端口[%s]失敗!\n",argv[1]);  
            fflush(stdout); 
            return 0; 
            } 

            m_MainId = getpid(); 
            //啟動文件接收偵聽線程 
            SocketTrans(); 
            close(m_ListenSocket); 
            return 0; 
   

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本韩国精品在线| 97精品超碰一区二区三区| 久久久久青草大香线综合精品| 国产成人亚洲综合a∨婷婷图片| 亚洲欧洲成人自拍| 日韩三级免费观看| av毛片久久久久**hd| 日本免费新一区视频| 国产精品三级视频| 欧美成人精品1314www| 色噜噜狠狠一区二区三区果冻| 久久99久久99精品免视看婷婷| 亚洲精品自拍动漫在线| 久久久久久免费网| 777亚洲妇女| 在线观看欧美黄色| 不卡电影一区二区三区| 精品一区二区三区欧美| 亚洲第一会所有码转帖| 国产精品麻豆久久久| 欧美va在线播放| 欧美日韩黄色一区二区| 9人人澡人人爽人人精品| 国产精品一区三区| 免费欧美在线视频| 偷拍亚洲欧洲综合| 亚洲精品美腿丝袜| 成人欧美一区二区三区| 久久亚洲欧美国产精品乐播| 欧美一区二区三区视频在线| 在线观看日韩精品| 色综合久久综合网| k8久久久一区二区三区| 国产91精品一区二区麻豆网站 | 天堂va蜜桃一区二区三区| 国产精品一区专区| 美腿丝袜亚洲综合| 日本伊人精品一区二区三区观看方式 | 亚洲精品国产无套在线观| 国产日产欧产精品推荐色| 欧美tickling挠脚心丨vk| 欧美一区二区三区电影| 欧美久久久影院| 欧美日韩在线亚洲一区蜜芽| 欧洲人成人精品| 欧美色老头old∨ideo| 在线观看成人免费视频| 91成人看片片| 欧美日韩黄视频| 91精品国产综合久久精品麻豆| 91精品麻豆日日躁夜夜躁| 91 com成人网| 久久无码av三级| 日韩欧美一级特黄在线播放| 日韩一区二区三| 91精品国产91久久久久久一区二区 | 夜夜夜精品看看| 亚洲在线中文字幕| 亚洲国产精品一区二区久久| 97久久精品人人爽人人爽蜜臀| 99精品热视频| 91国偷自产一区二区开放时间| 一本到不卡精品视频在线观看| 在线观看一区不卡| 欧美日本在线视频| 精品区一区二区| 中文字幕一区二区三区视频| 一区二区三区中文在线| 日韩制服丝袜av| 狠狠色狠狠色综合| 成人手机电影网| 欧美影院午夜播放| 欧美一区二区三区在线看| 精品成人在线观看| 中文字幕在线观看一区二区| 亚洲一区成人在线| 久久精品国产99久久6| 国产成人在线视频网址| 91免费观看视频在线| 欧美日韩免费观看一区二区三区| 日韩一级大片在线观看| 国产视频视频一区| 一区二区三区丝袜| 免费视频一区二区| bt7086福利一区国产| 欧美日本一区二区在线观看| 欧美精品一区在线观看| 亚洲欧美一区二区三区久本道91 | 一区二区三区在线视频免费观看| 日韩精品欧美精品| 国产999精品久久久久久| 色婷婷av一区二区三区软件| 日韩精品最新网址| 亚洲四区在线观看| 久久99国内精品| 色婷婷亚洲精品| 精品国产一区二区三区不卡| 亚洲激情第一区| 国产综合色产在线精品| 日本道精品一区二区三区| 亚洲18色成人| 国产精品自拍一区| 欧美日本韩国一区| 国产精品拍天天在线| 日韩影院在线观看| 92国产精品观看| 精品99999| 午夜电影一区二区| 99久久777色| 久久综合五月天婷婷伊人| 亚洲综合免费观看高清完整版在线| 韩国毛片一区二区三区| 欧美日韩免费一区二区三区| 亚洲欧美在线观看| 国产精品一区二区不卡| 91精品国产色综合久久不卡电影| 最新日韩av在线| 国产成人免费视| 日韩女优制服丝袜电影| 亚洲成人动漫在线观看| 99精品久久99久久久久| 国产日韩欧美不卡在线| 狠狠色丁香九九婷婷综合五月| 欧美美女激情18p| 亚洲裸体xxx| 成人黄色在线看| 久久久久综合网| 精品一区二区三区在线视频| 欧美一级专区免费大片| 亚洲成av人片www| 欧洲精品视频在线观看| 亚洲乱码中文字幕| 91麻豆成人久久精品二区三区| 国产精品乱码妇女bbbb| 成人黄色小视频在线观看| ww亚洲ww在线观看国产| 九色porny丨国产精品| 日韩精品在线一区| 蜜臀精品一区二区三区在线观看 | 337p粉嫩大胆色噜噜噜噜亚洲| 日日摸夜夜添夜夜添精品视频| 欧美日韩在线精品一区二区三区激情| 中文字幕日韩一区二区| 91丝袜呻吟高潮美腿白嫩在线观看| 中文字幕国产一区二区| 成人午夜看片网址| 国产精品久久久久久久第一福利| 懂色av噜噜一区二区三区av| 欧美国产日韩一二三区| 成人高清在线视频| 中文字幕免费观看一区| av一区二区三区四区| 亚洲日本在线a| 欧美在线观看你懂的| 亚洲成av人片在线观看无码| 在线播放91灌醉迷j高跟美女| 全国精品久久少妇| 精品噜噜噜噜久久久久久久久试看 | 亚洲视频免费在线观看| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲欧美一区二区久久 | 日韩久久久久久| 韩国午夜理伦三级不卡影院| 国产亚洲欧美日韩在线一区| 成人久久视频在线观看| 亚洲免费高清视频在线| 欧美伦理视频网站| 精品亚洲成a人| 国产精品成人午夜| 欧美性感一区二区三区| 日本成人超碰在线观看| 久久欧美中文字幕| 色综合久久久久久久久| 日产欧产美韩系列久久99| 久久久777精品电影网影网 | 亚洲色图一区二区三区| 欧美日韩一区二区欧美激情| 美日韩一区二区| 中文字幕国产一区二区| 欧美日韩国产美女| 国产精品自拍一区| 亚洲图片欧美色图| 精品99久久久久久| 色域天天综合网| 麻豆精品视频在线观看视频| 国产蜜臀av在线一区二区三区| 欧美最猛性xxxxx直播| 久久99国产精品免费网站| 中文字幕一区二区三区精华液| 在线成人免费观看| 成人精品高清在线| 青椒成人免费视频| 中文字幕人成不卡一区| 日韩一区二区三区视频在线| 97久久精品人人做人人爽50路| 美女脱光内衣内裤视频久久网站 | 欧美一级淫片007| 91在线视频18| 韩国成人精品a∨在线观看| 亚洲小少妇裸体bbw|