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

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

?? server.c

?? 使用TAP的蜂窩型GSM手機短消息服務中心
?? C
字號:
/* -------------------------------------------------------------------- *//* SMS Client, send messages to mobile phones and pagers		*//*									*//* server.c								*//*									*//*  Copyright (C) 1997,1998 Angelo Masci				*//*									*//*  This library is free software; you can redistribute it and/or	*//*  modify it under the terms of the GNU Library General Public		*//*  License as published by the Free Software Foundation; either	*//*  version 2 of the License, or (at your option) any later version.	*//*									*//*  This library is distributed in the hope that it will be useful,	*//*  but WITHOUT ANY WARRANTY; without even the implied warranty of	*//*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU	*//*  Library General Public License for more details.			*//*									*//*  You should have received a copy of the GNU Library General Public	*//*  License along with this library; if not, write to the Free		*//*  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.	*//*									*//*  You can contact the author at this e-mail address:			*//*									*//*  angelo@styx.demon.co.uk						*//*									*//* --------------------------------------------------------------------   $Id$   -------------------------------------------------------------------- */#include <stdio.h>#include <ctype.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdarg.h>#include <pwd.h>#include <netinet/in.h>#include <sys/socket.h>#include <arpa/inet.h>#include <sys/wait.h>#include <signal.h>#include <netdb.h>#include "server.h"#include "logfile.h"#include "common.h"/* -------------------------------------------------------------------- */#if !defined(WNOHANG)#define WNOHANG 0#endif/* -------------------------------------------------------------------- *//* Read a complete '\n' terminated string from socket			*//* upto maxlen characters will be read and a '\0' is appended		*//* -------------------------------------------------------------------- */char *hgets(char *buf, int maxlen, int fd){	int	result, 		i;	/* NOTE - 							*/	/* As this function now uses recv instead of read		*/	/* it probably makes sense to use the MSG_PEEK functionality	*/	/* to read a block of data find the newline and then		*/	/* make another call to receive with the correct length		*/	/* of the line.							*/	i = 0;	buf[0] = '\0';	while (i < (maxlen -1))	{		result = read(fd, &buf[i], 1);		if (result < 0) 		{ 	if (errno != EINTR) 			{	lprintf(LOG_ERROR, "read() failed");				exit(-1);			}		}		else		if (result == 0)		{			buf[i+1] = '\0';			if (i == 0)			{	return NULL;			}			break;		}		else		{	if (buf[i] == '\n')			{	i++;				break;			}			i++;		}	}		buf[i] = '\0';	return buf;}/* -------------------------------------------------------------------- *//* -------------------------------------------------------------------- */void hprintf(int fd, char *fmt, ...){	va_list args;	int	line_len,		len;static	char	line[MAX_STRING_LEN];	char	*line_ptr;	/* ---------------------------- */	va_start(args, fmt);	vsprintf(line, fmt, args);	va_end(args);	line_len = sms_strlen(line);	line_ptr = line;	while ((len = write(fd, line_ptr, line_len)) != line_len)	{		if (len < 0)		{	if (errno == EINTR)			{	continue;			}			else			{	lprintf(LOG_ERROR, "write() failed");				exit(-1);			}			}		line_ptr += len;		line_len -= len;	}}/* -------------------------------------------------------------------- *//* Reap child processes on receipt of SIGCHLD				*//* -------------------------------------------------------------------- */#if defined(LINUX) || defined(SOLARIS)void sigchld_handler(int signum){	while (waitpid((pid_t)-1, NULL, WNOHANG) > 0)	{		/* Reap children */	}	signal(SIGCHLD, sigchld_handler);	/* Re-establish signal 	*/						/* handler 		*/}#endif/* -------------------------------------------------------------------- *//* -------------------------------------------------------------------- */int server_init(int server_port){        int 	sockfd;  	/* listen on sock_fd		*/	struct 	sockaddr_in 		server_addr;    /* my address information 	*/	if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)	{	lprintf(LOG_ERROR, "socket() failed\n");		return(-1);	}	server_addr.sin_family      = AF_INET; 			/* host byte order 		*/	server_addr.sin_port        = htons(server_port); 	/* short, network byte order 	*/	server_addr.sin_addr.s_addr = INADDR_ANY; 		/* auto-fill with my IP 	*/	memset(&(server_addr.sin_zero), 0, 8);			/* zero rest of struct 		*/	if (bind(sockfd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) < 0)	{		switch (errno)		{		case EADDRINUSE:			lprintf(LOG_ERROR, "bind() - Socket %d allready in use\n", server_port);			break;		case EACCES:			lprintf(LOG_ERROR, "bind() - Socket %d protected port and not superuser\n", server_port);			break;		default:			lprintf(LOG_ERROR, "bind() failed\n");		}		return(-1);	}	if (listen(sockfd, MAX_BACKLOG) < 0)	{	lprintf(LOG_ERROR, "listen() failed\n");		return(-1);	}	lprintf(LOG_STANDARD, "Listening on port %d\n", server_port);	return sockfd;}/* -------------------------------------------------------------------- *//* -------------------------------------------------------------------- */int server_main(int server_port, void (*handle_child)(int new_fd)){	pid_t	pid;	int 	sockfd,	 	sin_size,	 	new_fd;	struct 	sockaddr_in 		client_addr; 	/* connector's address information 	*/	sockfd = server_init(server_port);	if (sockfd == -1)	{	return(1);	}	if (deamon_init() != 0)	{	return(1);	}#if defined(LINUX) || defined(SOLARIS)	signal(SIGCHLD, sigchld_handler);#else	signal(SIGCHLD, SIG_IGN);	/* Automagically reap zombies 	*/					/* under SYSV			*/#endif		set_consolelog(FALSE);		/* No more login output		*/					/* to be sent to the console	*/	while(TRUE)	{		/* main accept() loop */		sin_size = sizeof(struct sockaddr_in);		if ((new_fd = accept(sockfd, (struct sockaddr *)&client_addr, &sin_size)) < 0)		{			if (errno == EINTR)			{	continue;			}			else			{	lprintf(LOG_ERROR, "accept failed\n");				exit(-1);			}		}		pid = fork();		if (pid == 0)		{				(*handle_child)(new_fd);			close(new_fd);			exit(0);		}		else if (pid < 0)		{	lprintf(LOG_ERROR, "Trying to fork child process\n");			exit(-1);		}		close(new_fd);	}	return 0;}/* -------------------------------------------------------------------- *//* -------------------------------------------------------------------- */void default_echo(int new_fd){	char	buf[MAX_STRING_LEN];	while (hgets(buf, MAX_STRING_LEN, new_fd) != NULL)	{	printf("Received Data +%s+\n", buf);		hprintf(new_fd, "Echo: +%s+\n", buf);	}			}/* -------------------------------------------------------------------- *//* -------------------------------------------------------------------- */int deamon_init(void){	pid_t	pid;		pid = fork();			if (pid < 0)	{	return -1;	}	else 	if (pid != 0)	{	exit(0);	/* Parent Exits			*/	}	if (setsid() < 0)	/* Become session leader 	*/	{		lprintf(LOG_ERROR, "setsid failed\n");		exit(-1);	}	if (chdir("/") < 0)	/* Change working directory	*/	{		lprintf(LOG_ERROR, "chdir failed\n");		exit(-1);	}	return 0;}/* -------------------------------------------------------------------- *//* -------------------------------------------------------------------- */int get_client_information(int fd, char *host_name, char *ip_address){	int 	sin_size;	struct 	sockaddr_in 		client_addr; 	/* connector's address information 	*/	struct 	hostent		*host;	u_long	addr;		sin_size = sizeof(struct sockaddr_in);	if ((getpeername(fd, (struct sockaddr *)&client_addr, &sin_size)) < 0)	{	return -1;	}	sms_strcpy(ip_address, inet_ntoa(client_addr.sin_addr));	addr = inet_addr(ip_address);	host = gethostbyaddr((char *)&addr, sizeof(addr), AF_INET);	if (host != NULL)	{	sms_strcpy(host_name, host->h_name);	}	else	{	sms_strcpy(host_name, "");	}	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品一区二区三区网站观看| 91麻豆精品国产91久久久久| 亚洲444eee在线观看| 中文字幕色av一区二区三区| 欧美mv日韩mv国产| 欧美成人精精品一区二区频| 精品日韩欧美一区二区| 久久亚洲二区三区| 国产欧美精品在线观看| 欧美韩日一区二区三区四区| 中文乱码免费一区二区| 亚洲欧美影音先锋| 中文字幕一区三区| 一区精品在线播放| 亚洲三级在线看| 亚洲chinese男男1069| 日本欧洲一区二区| 国产经典欧美精品| 91免费看视频| 欧美日韩在线不卡| 欧美日韩精品欧美日韩精品一| 欧美性一二三区| 日韩精品资源二区在线| 久久久久久免费| 亚洲欧洲精品成人久久奇米网| 亚洲精品五月天| 日本亚洲一区二区| 成人av综合一区| 91精品国产色综合久久不卡电影 | 国产精品亚洲视频| 99久久精品免费看| 欧美一级在线视频| 国产精品电影一区二区| 亚洲va在线va天堂| 国产不卡视频在线播放| 欧美视频在线播放| 国产婷婷色一区二区三区四区| 亚洲精品免费视频| 久久精品av麻豆的观看方式| av电影天堂一区二区在线观看| 欧日韩精品视频| 久久久久99精品国产片| 亚洲国产你懂的| 国产精品99精品久久免费| 欧美网站一区二区| 欧美国产激情二区三区| 日韩黄色小视频| av在线不卡观看免费观看| 欧美一二三区在线| 亚洲色图视频网站| 国产激情一区二区三区| 日韩一级片在线播放| 亚洲男人的天堂网| 国产成人免费视频一区| 欧美变态tickle挠乳网站| 亚洲综合一区二区| thepron国产精品| 久久久不卡网国产精品二区| 图片区日韩欧美亚洲| 99精品在线观看视频| 中文字幕av一区二区三区免费看| 日韩国产欧美一区二区三区| 色哟哟一区二区三区| 国产亚洲综合在线| 久久99国产精品免费网站| 7777精品伊人久久久大香线蕉经典版下载 | 成人免费观看视频| 欧美精品一区男女天堂| 丝袜亚洲另类欧美| 欧美精品成人一区二区三区四区| 亚洲欧洲三级电影| 99久久综合国产精品| 国产精品污污网站在线观看| 久久99热国产| 26uuu久久综合| 麻豆视频一区二区| 欧美videossexotv100| 乱一区二区av| 精品1区2区在线观看| 美女视频黄频大全不卡视频在线播放| 在线91免费看| 日本系列欧美系列| xnxx国产精品| 国产91露脸合集magnet| 国产精品女主播av| 99精品视频免费在线观看| 中文字幕综合网| 欧美少妇一区二区| 日韩精品国产精品| 精品国产精品一区二区夜夜嗨| 久久精品99国产精品| 精品国产电影一区二区| 国产黄色精品网站| 亚洲三级在线免费| 欧美探花视频资源| 六月婷婷色综合| 亚洲国产精华液网站w| 91亚洲精华国产精华精华液| 亚洲一区在线观看网站| 日韩欧美一区二区免费| 国产精品影视网| 亚洲精品视频自拍| 欧美一区二区三区四区高清| 久久草av在线| 亚洲图片欧美激情| 7777精品伊人久久久大香线蕉的| 韩国av一区二区三区| 最新不卡av在线| 欧美片在线播放| 国产成人丝袜美腿| 性欧美大战久久久久久久久| 久久伊人中文字幕| 欧美在线你懂得| 国产成人精品免费看| 香蕉成人伊视频在线观看| 久久久久久久久久久电影| 日本乱码高清不卡字幕| 精品在线免费视频| 亚洲午夜久久久久中文字幕久| 日韩美一区二区三区| 一本到三区不卡视频| 国内成人免费视频| 午夜日韩在线电影| 国产精品美女久久久久高潮| 这里是久久伊人| 91国模大尺度私拍在线视频| 久久66热re国产| 亚洲福利视频导航| 亚洲日本中文字幕区| 日韩美一区二区三区| 欧洲亚洲精品在线| eeuss影院一区二区三区| 久久91精品国产91久久小草| 亚洲精品免费电影| 1区2区3区欧美| 日本一区二区三区国色天香 | 久久久综合视频| 欧美疯狂做受xxxx富婆| 日本高清不卡在线观看| 国产成人av福利| 国产一区激情在线| 美腿丝袜一区二区三区| 五月综合激情婷婷六月色窝| 最新国产精品久久精品| 中文字幕乱码日本亚洲一区二区 | 亚洲国产精品成人久久综合一区| 欧美年轻男男videosbes| 91久久精品国产91性色tv| 不卡一二三区首页| 成人精品免费网站| 成人av免费在线观看| 成人免费av网站| 国产成人av一区二区三区在线 | 自拍av一区二区三区| 成人免费视频在线观看| 亚洲日本护士毛茸茸| 亚洲人吸女人奶水| 亚洲毛片av在线| 亚洲一级在线观看| 婷婷一区二区三区| 蜜桃av一区二区三区电影| 老司机精品视频导航| 国产精品亚洲综合一区在线观看| 国产一区在线精品| 懂色av噜噜一区二区三区av| 成人美女在线观看| 色国产精品一区在线观看| 在线观看免费一区| 56国语精品自产拍在线观看| 日韩欧美二区三区| 久久综合久久鬼色中文字| 欧美国产日韩在线观看| 亚洲美女免费在线| 奇米四色…亚洲| 国产91丝袜在线观看| 91日韩在线专区| 欧美一区二区三区喷汁尤物| 久久蜜桃av一区二区天堂| 国产精品毛片久久久久久久| 一区二区国产盗摄色噜噜| 日日夜夜免费精品视频| 国产在线国偷精品产拍免费yy| 成人综合在线观看| 欧美四级电影网| 国产色爱av资源综合区| 一区二区三区高清| 久久精品99国产精品| 97aⅴ精品视频一二三区| 欧美放荡的少妇| 国产欧美精品在线观看| 午夜精品免费在线| 成人av在线网站| 91精品国产91热久久久做人人| 国产日韩av一区二区| 亚洲mv大片欧洲mv大片精品| 国产成人啪免费观看软件| 欧美私模裸体表演在线观看| 久久一区二区三区四区| 五月综合激情婷婷六月色窝| 成年人午夜久久久|