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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? socket.c

?? 非常經典的加密算法
?? C
字號:
/* * Socket operations * * getLocalAddr - no error reporting * getRemoteAddr - no error reporting * openClient - reports error * openServer - reports error */#ifdef _POSIX_SOURCE#undef _POSIX_SOURCE	/* see comment below */#endif#include <sys/types.h>	/* pid_t *//* * errno.h must not be _POSIX_SOURCE in BSDI's BSDI/386 or ENOTSOCK not defined */#include <errno.h>	/* EINTR ENOTSOCK *//* * These symbols are defined in <sys/types.h> but not #ifdef _POSIX_SOURCE * * Some machines can cause them to be defined by: * DEC/OSF1  - #define _OSF_SOURCE * HP-UX     - #define _HPUX_SOURCE - must still do this for other declarations * SunOS 4.1 - not possible, that's why we put them here. */#if 0typedef unsigned char	u_char;		/* <netinet/in.h> */typedef unsigned short	u_short;	/* <sys/socket.h> <netinet/tcp.h> */typedef unsigned long  	u_long;		/* <netinet/tcp.h> */typedef unsigned int	u_int;		/* <sys/socket.h> and DEC OSF/1 */#endif#define _POSIX_SOURCE#include <sys/socket.h>	/* struct sockaddr */			/* connect accept listen bind socket */			/* getpeername getsockname */#include <netinet/in.h>#include <netinet/tcp.h>/* TCP_NODELAY */#include <netdb.h>	/* gethostbyaddr */#include <arpa/inet.h>	/* inet_ntoa on mips and hpux */#include <unistd.h>	/* close waitpid */#include <stdlib.h>	/* atexit */#include <stdio.h>#include <string.h>#include <signal.h>#include <sys/wait.h>	/* WNOHANG */#include "log.h"#include "socket.h"#include "deslogin.h"#include "posignal.h"/* * Return a non-zero socket type of the specifed fd if it is a socket *    0 otherwise, -1 for failure * * socket types in <sys/socket.h>: (socket types always > 0) *     SOCK_STREAM SOCK_DGRAM SOCK_RAW SOCK_RDM SOCK_SEQPACKET */int socktype(fd)    int fd;{   int sotype = -1;   int size = sizeof sotype;   int res;   res = getsockopt(fd, SOL_SOCKET, SO_TYPE, &sotype, &size);   if (res >= 0) {      res = sotype;   } else if (errno == ENOTSOCK) {      res = 0;   }   return res;}/* * If flag non-zero, enable TCP delays * * Returns: *     1 delay was previously enabled *     0 delay was previously disabled *    -1 if gotprotobyname for "tcp" failed *    -2 if getsockopt TCP_NODELAY failed *    -3 if setsockopt TCP_NODELAY failed */int tcpDelay(sock, flag)    int sock, flag;{   struct protoent *pent;   int newflag = -1, oldflag = -1;   int newlen = sizeof newflag, oldlen = sizeof oldflag;   int tcplevel, res;   flag = !flag;			/* NODELAY is opposate sense */   pent = getprotobyname("tcp");   if (pent == (struct protoent *) 0) {	/* opens file /etc/protocols */      return -1;   }   tcplevel = pent->p_proto;		/* protocol number for tcp */   res = getsockopt(sock, tcplevel, TCP_NODELAY, &oldflag, &oldlen);   if (res == 0) {      oldflag = !oldflag;		/* 4 for TCP_NODELAY on, 0 for OFF */   } else {      if (errno == ENOPROTOOPT) {	/* never happens on hpux */	 oldflag = 1;			/* NODELAY was disabled */      } else {	 return -2;      }   }   res = setsockopt(sock, tcplevel, TCP_NODELAY, &flag, sizeof flag);   if (res != 0) {      return -3;   }   /*    * To detect new state when in debugger    */   res = getsockopt(sock, tcplevel, TCP_NODELAY, &newflag, &newlen);   return oldflag;}/* * Lookup the specified network address (from accept for example). * Returns (char *) 0 for failure. */char *hostAddrToName(addr, name, namelen)   struct sockaddr_in *addr;	/* address from accept(2) */   char *name;			/* where to put hostname */   unsigned namelen;		/* how many bytes are there for it */{   struct hostent *hp = gethostbyaddr(      (char *) &(addr->sin_addr), sizeof addr->sin_addr, addr->sin_family);   if (hp == (struct hostent *) 0) {      return (char *) 0;   }   if (name != (char *) 0) {      strncpy(name, hp->h_name, namelen);   }   return name;}/* * Internal: convert address to string and port * * Returns: *    -1 - if hostname not found (string contains internet address) *     0 - if hostname found and copied */int mapAddr(iaddr, hostName, size, port)   struct sockaddr_in *iaddr;   char *hostName;   unsigned size;   unsigned *port;{   char *chp;   int res = 0;   chp = hostAddrToName(iaddr, hostName, size);   if (chp == (char *) 0) {      if (hostName != (char *) 0) {	 strncpy(hostName, inet_ntoa(iaddr->sin_addr), size);      }      res = -1;   }   if (port != (unsigned *) 0) {      *port = (unsigned) ntohs(iaddr->sin_port);   }   return res;}/* * Find the address for the specified host and port (AF_INET only). * * Input;  addr, size    location and size of whereto put the result *         port          which port number to use * * Output: addr - the address * Returns: The sizeof the area used by addr, or -1 if error */int hostNameToAddr(addr, size, name, port)   struct sockaddr *addr;   unsigned size;   char *name;   int port;{   struct hostent   *hp = gethostbyname(name);   struct sockaddr_in *iaddr = (struct sockaddr_in *) addr;   int res = -1;   if (hp != (struct hostent *) 0) {      memset(addr, '\0', size);      iaddr->sin_family = hp->h_addrtype;      if (hp->h_addrtype == AF_INET) {	 if ((char *) &iaddr->sin_addr + hp->h_length	  <= (char *) iaddr + size) {	    memcpy(&iaddr->sin_addr, hp->h_addr, hp->h_length);	    iaddr->sin_port   = htons(port);	 }	 res = sizeof (struct sockaddr_in);      }   }   return res;}/* * Try to find the local address of the specified socket.  * * Returns: *     0        - success *     ENOTSOCK - if not a socket *     errno    - if other error */int getLocalAddr(sock, hostName, size, port)   int sock;   char *hostName;   unsigned size;   unsigned *port;{   int res;   struct sockaddr_in iaddr;   int addrlen;   addrlen = sizeof iaddr;   res = getsockname(sock, (struct sockaddr *) &iaddr, &addrlen);   if (res < 0) {      return errno;   }   res = mapAddr(&iaddr, hostName, size, port);   return 0;}/* * Try to find the remote address of the specified socket.  * * Returns: *     0        - success *     ENOTSOCK - if not a socket *     errno    - if other error */int getRemoteAddr(sock, hostName, size, port)   int sock;   char *hostName;   unsigned size;   unsigned *port;{   int res;   struct sockaddr_in iaddr;   int addrlen;   addrlen = sizeof iaddr;   res = getpeername(sock, (struct sockaddr *) &iaddr, &addrlen);   if (res < 0) {      return errno;   }   res = mapAddr(&iaddr, hostName, size, port);   return 0;}/* * Return the port number for the specified service name or -1 if failed */int getServicePort(name)   char *name;{   struct servent *sent;    int res = -1;      sent = getservbyname(name, (char *) 0);   if (sent != (struct servent *) 0) {      res = sent->s_port;   }   return res;}void sockHandler(sig)    int sig; {    if (debug) {      log("%s(openServer): SIGCHLD\n", progName);   }}/* * Listen for a TCP connection on the specified port.  Return socket to it. * If hostname is non-null, return upto size bytes of remote host's name. * If rport is non-null, set it to the remote port. * * The caller of this routine should catch SIGCHLD using POSIX sigaction call * (see posignal.c) so that we can reap unwanted children when they die. * * Reports Error if failure and returns -1; othewise the socket */int openServer(port, hostName, size, rport, serverflag)   int port;   char *hostName;   unsigned size;   unsigned *rport;   int serverflag;			/* 1 if server, 0 if only once */{   int lsock, csock = -1, caddrLen, res;    pid_t pid;   struct sockaddr_in laddr, caddr;   pid_t child = 0;   pfv   oldHandler;       lsock = socket(AF_INET, SOCK_STREAM, 0);   if (lsock < 0) {      log("%s: stream socket create failed--%s\n", 	 progName, ERRMSG);      return -1;   }   memset(&laddr, '\0', sizeof laddr);   laddr.sin_family = AF_INET;   laddr.sin_addr.s_addr = htonl(INADDR_ANY);   laddr.sin_port = htons(port);   res = bind(lsock,  (void *) &laddr, sizeof laddr);   if (res < 0) {      log("%s: bind to port %d failed --%s\n", progName, port, ERRMSG);      return -1;   }   res = listen(lsock, 2);   if (res < 0) {      log("%s: listen failed --%s\n", progName, ERRMSG);      return -1;   }   oldHandler = posignal(SIGCHLD, sockHandler);   if (oldHandler == (pfv) -1)  {      if (oldHandler == (pfv) -1) {	 log("%s(openServer): sigaction SIGCHLD failed--%s\n", 	    progName, ERRMSG);	 return -1;      }   }   do {      if (csock >= 0) {	 close(csock);      }      /*       * Block until we receive a connect request.       */      caddrLen = sizeof caddr;      memset(&caddr, '\0', sizeof caddr);      csock = accept(lsock, (void *) &caddr, &caddrLen);      if (csock < 0) {	 if (errno != EINTR) {	    log("%s: accept call failed--%s\n", progName, ERRMSG);	    exit(1);	 }	 /* SIGCHLD: Reap all children so we don't leave zombie processes. */	 do {	    pid = waitpid(-1, (int *) 0, WNOHANG);	 } while (pid > 0);      } else {	 if (serverflag) {	    child = fork();	 }      }   } while (serverflag && child > 0);   posignal(SIGCHLD, oldHandler);   close(lsock);   if (debug) {      log("%s: accept from %s:%u\n", 	 progName, inet_ntoa(caddr.sin_addr), ntohs(caddr.sin_port));   }   if (child < 0) {      log("%s: openServer: fork of child failed\n", progName);      exit(1);   }   res = tcpDelay(csock, 1);		/* don't delay TCP transmissions */   if (res < 0) {      log("%s: tcpDelay returned (%d) --%s\n", progName, res, ERRMSG);      /* OK to continue */   }   res = mapAddr(&caddr, hostName, size, rport);   return csock;}/* * Establish a connection to the remote host and port.   * * Return -1 for failure (error reported) */int openClient(hostName, port)   char *hostName;   int port;{   int sock, res;   struct sockaddr addr;   int addrLen;   addrLen = hostNameToAddr(&addr, sizeof addr, hostName, port);   if (addrLen < 0) {      log("%s: can't find address for host \"%s\"\n", 	 progName, hostName, ERRMSG);      return -1;   }   sock = socket(addr.sa_family, SOCK_STREAM, 0);   if (sock < 0) {      log("%s: stream socket create failed--%s\n", 	 progName, ERRMSG);      return -1;   }   res = connect(sock, (struct sockaddr *) &addr, addrLen);   if (res < 0) {      log("%s: connect to %s:%d failed--%s\n", 	 progName, hostName, port, ERRMSG);      return -1;   }#if 0		/* BSD removed this and replaced with struct linger. */   res = setsockopt(sock, SOL_SOCKET, SO_DONTLINGER, (char *) 0, 0);#endif   res = tcpDelay(sock, 1);		/* don't delay TCP transmissions */   if (res < 0) {      log("%s: tcpDelay returned (%d) --%s\n", progName, res, ERRMSG);      /* OK to continue */   }   return sock;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品99久久久久久久女警 | 久久国产欧美日韩精品| 欧美日韩国产另类一区| 亚洲123区在线观看| 欧美精品乱码久久久久久按摩 | 国产一区二区在线影院| 久久久久久久性| 成人黄色免费短视频| 中文字幕日韩一区| 在线观看国产91| 久久精品噜噜噜成人av农村| 精品国免费一区二区三区| 国产黄人亚洲片| 亚洲激情网站免费观看| 欧美日韩不卡在线| 国产老妇另类xxxxx| 18成人在线视频| 欧美精品日韩一本| 国产乱码精品一区二区三区五月婷 | 欧美成人性福生活免费看| 黄一区二区三区| 中文字幕日韩精品一区 | 日韩欧美中文字幕精品| 精品一区二区三区在线观看国产| 久久免费看少妇高潮| caoporen国产精品视频| 亚洲电影欧美电影有声小说| 日韩欧美视频在线| av在线播放一区二区三区| 亚洲黄色小视频| 久久综合久久综合九色| 91麻豆国产福利在线观看| 日本不卡在线视频| 专区另类欧美日韩| 日韩欧美一区二区久久婷婷| 国v精品久久久网| 日韩国产一区二| 自拍偷拍国产精品| 久久精品一区蜜桃臀影院| 欧美午夜片在线观看| 黄色精品一二区| 亚洲第一综合色| 国产精品女主播av| 日韩精品一区二区三区视频 | 一本一本大道香蕉久在线精品| 蜜桃久久久久久| 亚洲综合无码一区二区| 精品国产乱码久久久久久久 | 青青草精品视频| 一区二区三区在线不卡| 久久久久久久网| 欧美一区二区三区在线观看| av在线不卡观看免费观看| 韩国理伦片一区二区三区在线播放 | 欧美日韩一区成人| 91玉足脚交白嫩脚丫在线播放| 精品一区二区在线看| 亚洲第一电影网| 一区二区三区美女| 中文av字幕一区| 久久精品视频在线免费观看 | 欧美少妇bbb| 91色九色蝌蚪| 99re6这里只有精品视频在线观看| 国产美女在线精品| 国模无码大尺度一区二区三区| 日韩高清欧美激情| 天使萌一区二区三区免费观看| 亚洲欧美国产77777| 国产精品久久久久久久午夜片 | 麻豆免费精品视频| 日本sm残虐另类| 免费观看日韩av| 免费成人性网站| 久久精品国产77777蜜臀| 日本成人在线一区| 麻豆成人91精品二区三区| 日本中文字幕一区二区视频| 石原莉奈一区二区三区在线观看| 亚洲大片精品永久免费| 五月婷婷久久丁香| 日韩和欧美的一区| 久久99精品国产麻豆婷婷| 青青草一区二区三区| 美女网站色91| 粉嫩av一区二区三区| 成人午夜在线视频| av不卡免费在线观看| 在线视频综合导航| 在线观看91av| 欧美xxxxxxxx| 国产精品欧美经典| 亚洲激情六月丁香| 日韩精品电影一区亚洲| 美女爽到高潮91| 成人av电影在线观看| 91丨九色丨国产丨porny| 日本乱码高清不卡字幕| 欧美精品v日韩精品v韩国精品v| 日韩一区二区在线播放| 久久人人爽人人爽| 亚洲青青青在线视频| 亚洲h在线观看| 国产精品自拍一区| 91在线视频网址| 欧美一区二区三区视频| 久久影院午夜片一区| 国产精品不卡视频| 视频在线观看91| 国产成人av电影| 欧美日韩在线直播| 久久久久久久av麻豆果冻| 综合激情网...| 美女脱光内衣内裤视频久久影院| 成人少妇影院yyyy| 欧美精品自拍偷拍| 国产区在线观看成人精品| 亚洲免费观看高清| 极品美女销魂一区二区三区| 成人免费视频网站在线观看| 在线电影国产精品| 中文字幕在线视频一区| 日韩av电影免费观看高清完整版 | 欧美色大人视频| 26uuu国产电影一区二区| 综合亚洲深深色噜噜狠狠网站| 麻豆精品一区二区三区| 91丨porny丨首页| 精品久久久久香蕉网| 一区二区三区在线观看欧美| 国产精品亚洲综合一区在线观看| 欧美色国产精品| 亚洲视频1区2区| 国产一二三精品| 欧美一区二区三区四区五区 | 欧美xxxx在线观看| 亚洲国产中文字幕| 91亚洲大成网污www| 日韩视频国产视频| 亚洲电影一区二区| 成人黄色小视频| 久久久久国产免费免费 | 国产a级毛片一区| 日韩一本二本av| 视频一区欧美日韩| 91丨porny丨在线| 中文字幕在线不卡一区二区三区| 韩国欧美国产一区| 日韩你懂的电影在线观看| 亚洲成av人在线观看| 色综合久久中文字幕综合网| 亚洲电影一区二区| 91麻豆精品在线观看| 国产欧美一区二区精品仙草咪| 美腿丝袜在线亚洲一区| 欧美精品 日韩| 天天操天天综合网| 欧美色图天堂网| 亚洲国产一区二区a毛片| 色婷婷香蕉在线一区二区| 中文字幕亚洲精品在线观看| 国产99精品国产| 欧美国产欧美综合| 国产成人av网站| 国产精品视频一二三| 国产不卡免费视频| 国产精品全国免费观看高清| 国产精品99久久久久久似苏梦涵| 久久九九久久九九| 成人av在线影院| 亚洲人成网站在线| 欧洲生活片亚洲生活在线观看| 亚洲最新视频在线播放| 欧美优质美女网站| 天堂在线一区二区| 日韩三级免费观看| 国产一区在线精品| 国产精品蜜臀av| 91免费版pro下载短视频| 亚洲女厕所小便bbb| 在线精品视频一区二区| 亚洲aⅴ怡春院| 26uuu国产一区二区三区| 夫妻av一区二区| 亚洲欧美日本韩国| 欧美日韩激情在线| 久久99久久99精品免视看婷婷| 久久―日本道色综合久久| 成人丝袜高跟foot| 一区二区理论电影在线观看| 欧美精品一二三四| 国产一区二区精品久久| 国产精品久线观看视频| 欧洲视频一区二区| 国内精品嫩模私拍在线| 国产精品视频你懂的| 欧美调教femdomvk| 国产真实乱对白精彩久久| 国产精品久久久久久福利一牛影视 | 欧美久久久久久久久中文字幕|