亚洲欧美第一页_禁久久精品乱码_粉嫩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 *//* * 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 <errno.h>	/* EINTR */#include <signal.h>#include <sys/wait.h>	/* WNOHANG */#include "log.h"#include "socket.h"#include "deslogin.h"#include "psignal.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 psignal.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 = psignal(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);   psignal(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一区二区三区免费野_久草精品视频
eeuss鲁一区二区三区| 美女www一区二区| 久久免费精品国产久精品久久久久| 久久久久久亚洲综合影院红桃| 国产精品狼人久久影院观看方式| 国产精品欧美极品| 亚洲欧洲在线观看av| aaa国产一区| 国产91丝袜在线播放0| 免费在线观看视频一区| 亚洲美女精品一区| 日本中文一区二区三区| 亚洲在线成人精品| ...av二区三区久久精品| 香蕉影视欧美成人| 亚洲午夜影视影院在线观看| 精品国产一区二区三区久久久蜜月| 国产精品久久久爽爽爽麻豆色哟哟| 日韩欧美三级在线| 丁香五精品蜜臀久久久久99网站| 在线一区二区视频| 久久久99免费| 一区二区三区免费看视频| 国产情人综合久久777777| 国产欧美精品一区二区色综合朱莉| 亚洲免费色视频| 北条麻妃国产九九精品视频| 日韩一级大片在线观看| 婷婷综合在线观看| 国产乱淫av一区二区三区| 91免费视频网| 91麻豆精品国产91久久久久久久久| 久久久久久黄色| 一区二区理论电影在线观看| 久久精品国产一区二区| 欧美亚洲国产一区在线观看网站| 国产精品美女久久久久久久久 | 中文字幕不卡的av| 精品在线观看免费| 欧美一区二区三区色| 日韩理论电影院| 日本精品视频一区二区三区| 中文字幕在线不卡一区二区三区| 国产永久精品大片wwwapp| 日韩精品一区二区三区在线| 麻豆精品蜜桃视频网站| 欧美一区二区三区小说| 日本亚洲欧美天堂免费| 欧美一级片在线看| 一区二区激情小说| 欧美日韩成人在线一区| 日韩av不卡一区二区| 久久综合九色综合97_久久久| 老司机一区二区| 精品国产人成亚洲区| 国产精品伊人色| 久久精品人人做人人综合 | 粉嫩嫩av羞羞动漫久久久| 久久久国际精品| 国产欧美日韩在线看| 国产在线播精品第三| 欧美日韩精品欧美日韩精品 | 亚洲欧美偷拍另类a∨色屁股| 日本不卡一区二区三区 | 欧美videos中文字幕| 精品系列免费在线观看| 337p日本欧洲亚洲大胆精品| 成人短视频下载| 亚洲激情在线播放| 日韩女优视频免费观看| 精品视频1区2区3区| 18欧美亚洲精品| 国产成人免费视频精品含羞草妖精| 精品国产亚洲一区二区三区在线观看| 亚洲免费av高清| 欧美三级电影在线看| 精品午夜久久福利影院| 亚洲高清免费观看高清完整版在线观看| 欧美一级黄色录像| 高清不卡在线观看| 亚洲高清一区二区三区| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美日韩免费高清一区色橹橹| 国产伦精一区二区三区| av综合在线播放| 国产一区二区按摩在线观看| 奇米精品一区二区三区四区| 亚洲永久精品大片| 亚洲国产一区视频| 国产女同互慰高潮91漫画| 一区二区高清视频在线观看| 国产性天天综合网| 91精品久久久久久久99蜜桃| 欧美日韩精品福利| 久久亚洲一区二区三区四区| 久久麻豆一区二区| 日韩一级免费观看| 欧美猛男男办公室激情| 国产一区二区三区在线看麻豆| 亚洲成人av电影在线| 五月综合激情婷婷六月色窝| 国产午夜精品美女毛片视频| 337p亚洲精品色噜噜狠狠| 日韩小视频在线观看专区| 欧美福利电影网| 国产精品久久久久影视| 国产精品对白交换视频| 亚洲色图欧美在线| 一级日本不卡的影视| 免费国产亚洲视频| 国产东北露脸精品视频| 欧美一区在线视频| 精品电影一区二区| 亚洲蜜臀av乱码久久精品| 一区二区三区波多野结衣在线观看| 成人欧美一区二区三区| 亚洲国产精品天堂| 不卡一二三区首页| 欧美久久久久久蜜桃| 综合在线观看色| 精品一区二区综合| 欧美精品在线一区二区三区| 国产亚洲精品7777| 久久激情五月激情| 99re成人在线| 久久久精品一品道一区| 中文字幕乱码一区二区免费| 日韩电影在线观看网站| 91在线观看美女| 欧美激情一区在线观看| 国产成人亚洲综合色影视| 91精品欧美福利在线观看| 欧美成人官网二区| 亚洲在线视频免费观看| 国产美女娇喘av呻吟久久| 亚洲欧美日韩国产另类专区| 国产精品一区二区果冻传媒| 日韩一区二区在线看| 日韩精品电影在线| 欧美乱妇一区二区三区不卡视频| 国产精品女主播在线观看| 欧美高清激情brazzers| www激情久久| 视频在线在亚洲| 国产成人免费在线观看不卡| 精品99久久久久久| 午夜国产精品一区| 国产精品入口麻豆原神| 午夜精品成人在线| 国产精品99久久久久| 久久久久久久久一| 色视频成人在线观看免| 日韩电影在线观看网站| 久久午夜色播影院免费高清| 狠狠狠色丁香婷婷综合激情| 久久久久久久久久久久电影| 国产在线精品一区二区 | 国产福利一区二区| 亚洲国产日韩av| 国产毛片精品视频| 亚洲乱码国产乱码精品精可以看| 日本精品一区二区三区高清| 亚洲线精品一区二区三区 | 精品国产伦理网| 91蜜桃在线免费视频| 亚洲国产人成综合网站| 欧美激情艳妇裸体舞| 国产黄色成人av| 亚洲视频狠狠干| 在线观看成人免费视频| 狠狠色丁香久久婷婷综合丁香| 亚洲午夜久久久久| 精品精品欲导航| 欧美日韩一区二区在线观看 | 偷偷要91色婷婷| 日本欧美在线看| 亚洲成人免费影院| 国产清纯白嫩初高生在线观看91| 91色综合久久久久婷婷| 日韩高清国产一区在线| 精品久久国产97色综合| 午夜亚洲国产au精品一区二区| 精品国产乱码久久久久久蜜臀| 久久色成人在线| 欧美tk丨vk视频| 欧美精品免费视频| 99视频超级精品| 欧美日韩一区二区在线观看| 久久精品欧美一区二区三区不卡| 午夜精品免费在线| 亚洲综合一区二区| 欧美激情一区二区三区不卡| 成人激情黄色小说| 国内精品免费**视频| 韩国女主播成人在线观看| 亚洲国产欧美在线| 国产综合成人久久大片91| 在线国产亚洲欧美| 91精品国产综合久久福利| 欧美电视剧在线看免费|