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

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

?? ctrl.c

?? 《linux C語言應用》一書附帶的光盤
?? C
字號:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include "thread.h"

#include "define.h"
#include "types.h"
#include "ctrl.h"
#include "net_send.h"

#define TIME_OUT	2000




struct reply_msg {
	ctl_hdr head;
	char	data;
};
//global variable
int g_is_running=0; //data socket state
int g_is_dev_busy=0; //device state


/*int quit_socket=0;*/
int is_connected[25+MAX_CONNECTED_NO+MAX_CONNECTED_NO];

#define	IS_CONNECTED_CTRL(a)	is_connected[25+MAX_CONNECTED_NO+a] 

void
tcp_close (int sockfd) {
    close(sockfd);
}

int
init_tcp (char ip[16],int port) {
    int fd;
    struct sockaddr_in addr;
    int optval = 1;
    if ((fd = socket(AF_INET,SOCK_STREAM,0))<0) {
        perror("socket");
        return -1;
    }
    printf("listen sock:%d\n",fd);
    bzero(&addr,sizeof(addr));
    addr.sin_family = AF_INET;
    addr.sin_port = htons(port);
    addr.sin_addr.s_addr = INADDR_ANY;

    setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,&optval,sizeof(optval));

    if (bind(fd,(struct sockaddr *)&addr,sizeof(addr)) < 0) {
        sleep(5);
        if (bind(fd,(struct sockaddr *)&addr,sizeof(addr)) < 0) {
            perror("bind");
            return -1;
        }
    }
    if (listen (fd,MAX_CONNECTED) < 0) {
        perror("listen");
        return -1;
    }
    return fd;
};


THREAD_RETURN THREAD_API
ctrl_msg_proc(void * args){
	int fd=*((int*)args);
	ctl_hdr *rcv_hdr;
	char buffer[256];
	int rcv_len=0;
	unsigned char ret_code=0;
	int is_me=0;

	//set recv timeout
	struct timeval tm_out;
	tm_out.tv_sec=TIME_OUT;
	tm_out.tv_usec=0;

	if ((setsockopt(fd,SOL_SOCKET,SO_RCVTIMEO,&tm_out,sizeof(tm_out)))<0)	{

		perror("setsockopt");
		exit(-1);
	}

	do {
		sleep(300);
		bzero(buffer,sizeof(buffer)); 
		rcv_len=recv(fd,buffer,sizeof(buffer),0);
		printf("rcv_len is %d\n",rcv_len);
		if (rcv_len<0) {
	
			printf("socket %d timeout \n",fd);
			break;
		}

		if (rcv_len>0) {
	
		rcv_hdr=(ctl_hdr*)buffer;
		ret_code=proc_cmd(buffer,fd,&is_me);
		printf(" proc_cmd return value is %d\n",ret_code);
		

		struct reply_msg rpl_msg;
		rpl_msg.head.ki=KI_REPLY;
		rpl_msg.head.len=10;
		rpl_msg.head.mo=MO_SERVER;
		rpl_msg.head.ttl=0;
		rpl_msg.head.type=TYPE_REPLY;
		rpl_msg.data=ret_code;
		send(fd,&rpl_msg,rpl_msg.head.len,0);
	}
		
	} while((ret_code!=KI_QUIT));
	
	//unlock the resource if necessary
	if (is_me&&g_is_dev_busy) {
		g_is_dev_busy=0;
	}
	
	close(fd);
	IS_CONNECTED_CTRL(fd)=0;
	return 0;
	
}


THREAD_RETURN THREAD_API
ctrl_s(void *args){
	int newsockfd,fd, sockfd;
	fd_set readfds,exceptfds;
	struct sockaddr_in addr;
	socklen_t addr_len = sizeof(struct sockaddr_in);
	char buffer[256];
	char buffer_out[256];
	char res[7];
	struct timeval timeout;
	timeout.tv_sec = 3;
	timeout.tv_usec =0;

	sockfd = *((int*)args);
	
	for (fd=0;fd<MAX_CONNECTED;fd++) {
		IS_CONNECTED_CTRL(fd)=0;
	}

	IS_CONNECTED_CTRL(sockfd)=1;
	
	
	ThreadStruct ctrl_socket_thd_struct;

	while (1) {
		sleep(3);
		FD_ZERO(&readfds);
		FD_ZERO(&exceptfds);

		for (fd=3;fd<MAX_CONNECTED;fd++)
		{
			if (IS_CONNECTED_CTRL(fd)) {
				FD_SET(fd,&readfds);
				FD_SET(fd,&exceptfds);
			}
		}
		
		if (select(MAX_CONNECTED,&readfds,NULL,&exceptfds,&timeout)<0) {
			perror("select");
			continue;
		}


		for (fd=3;fd<MAX_CONNECTED_NO;fd++) {
			if (FD_ISSET(fd,&exceptfds)) {
				if (sockfd!=fd) {
					printf("exceptfds connection closed \n");
					close(fd);
					IS_CONNECTED_CTRL(fd)=0;
				}
			}
			if (FD_ISSET(fd,&readfds)) {
				if (sockfd==fd) {
					if ((newsockfd=accept(sockfd,(struct sockaddr *)&addr,&addr_len))<0) {
						perror("accept");
					}
					else{
						printf("connect from %s sock: %d\n",inet_ntoa(addr.sin_addr),newsockfd);
						if (newsockfd<MAX_CONNECTED_NO) {
							IS_CONNECTED_CTRL(newsockfd)=1;
						}
						else
							close(newsockfd);
					}
				}
				else{
					bzero(buffer,sizeof(buffer));
					int recv_len=0;
					
					if (IS_CONNECTED_CTRL(fd)==2) {
						printf("readfds connection closed .\n");
						close(fd);
						IS_CONNECTED_CTRL(fd)=0;
					}
					else{
						recv_len =  recv(fd,buffer,sizeof(buffer),0);
						if (recv_len>0){
							bzero(buffer_out,sizeof(buffer_out));
							if (check_user(buffer)!=RPL_AUTH_PASSED) {
								sprintf(res,"%c%c%c%c%c%c%c",0x06,0x62,0x63,0x64,
									KI_REPLY,RPL_AUTH_PASSED,0);
								send(fd,res,7,0);
								printf("check user successful\n");
								IS_CONNECTED_CTRL(fd)=2;
								init_active_handle(ctrl_socket_thd_struct.hActive);
								start_thread(ctrl_socket_thd_struct,&fd,&ctrl_msg_proc);
								set_thread_priority(ctrl_socket_thd_struct,VW_MAX_THREAD_PRIORITY-1);
								break;
							}
							else{
								sprintf(res,"%c%c%c%c%c%c%c",0x06,0x68,0x69,0x67,
									KI_REPLY,RPL_AUTH_FAILED,0);
								send(fd,res,7,0);
								tcp_close(fd);
								IS_CONNECTED_CTRL(fd)=0;
							}
						} 
					}
				}
			}
		}
	}
	
	for (fd=0;fd<MAX_CONNECTED_NO;fd++) {
		IS_CONNECTED_CTRL(fd)=0;
	}
	tcp_close(sockfd);
	sleep(5);

	printf("listen thread finish! \n");
	return 0;
}

int main(){
	int fd;
	fd=init_tcp("210.25.137.234",8101);
	ThreadStruct ctrl_socket_thread;
	init_active_handle(ctrl_socket_thread.hActive);
	start_thread(ctrl_socket_thread,&fd,&ctrl_s);
	while (1) {
		sleep(1000);
	}
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区精品性| 久久一夜天堂av一区二区三区| 正在播放一区二区| 国产精品久久久久精k8 | 国产精品久久福利| 天天综合天天综合色| 99久久精品国产毛片| 欧美va亚洲va香蕉在线| 亚洲午夜精品17c| fc2成人免费人成在线观看播放 | 久久国产福利国产秒拍| 91年精品国产| 国产精品久久久久影院| 美女国产一区二区三区| 欧美色欧美亚洲另类二区| 国产欧美综合在线| 国产美女久久久久| 日韩精品一区二区三区swag| 亚洲国产精品综合小说图片区| 国产成人av一区| 久久久久久一二三区| 男男成人高潮片免费网站| 欧美日韩一区中文字幕| 亚洲欧美另类小说| 91香蕉视频污| 亚洲视频一区二区在线| 99久久婷婷国产精品综合| 国产精品少妇自拍| 成人午夜私人影院| 国产精品久久久久毛片软件| 丁香六月久久综合狠狠色| 国内外精品视频| 国产精品久久久久aaaa樱花| 国产一区二区三区不卡在线观看| 欧美日韩一级黄| 日韩精品一二三区| 欧美三区在线视频| 亚洲成在人线在线播放| 欧美精品久久一区| 日产欧产美韩系列久久99| 91精品一区二区三区在线观看| 午夜电影一区二区| 日韩亚洲欧美中文三级| 九色综合狠狠综合久久| 久久久亚洲精品一区二区三区| 岛国一区二区在线观看| 亚洲嫩草精品久久| 欧美日韩美少妇| 久久精品国产成人一区二区三区 | 欧美理论片在线| 日韩激情视频网站| 久久久精品影视| www.日韩av| 亚洲一区二区三区四区在线 | 欧美日韩一级大片网址| 三级亚洲高清视频| 久久综合九色综合欧美就去吻| 国产成人aaa| 又紧又大又爽精品一区二区| 欧美精品久久一区二区三区| 国内成+人亚洲+欧美+综合在线| 欧美国产精品劲爆| 在线视频观看一区| 加勒比av一区二区| 亚洲三级电影网站| 日韩写真欧美这视频| 成人av资源站| 丝袜a∨在线一区二区三区不卡| 久久这里只精品最新地址| 成av人片一区二区| 午夜国产精品一区| 国产精品国产三级国产专播品爱网 | 韩国成人福利片在线播放| 中文字幕日韩欧美一区二区三区| 欧美日韩一级视频| 国产91高潮流白浆在线麻豆| 亚洲成av人片一区二区三区| 国产精品五月天| 欧美一区二区在线不卡| 91免费精品国自产拍在线不卡| 免费成人在线观看| 亚洲国产一区二区三区青草影视| 久久免费午夜影院| 欧美精品久久久久久久多人混战 | 91猫先生在线| 国产一区在线不卡| 婷婷国产在线综合| 日日夜夜精品视频天天综合网| 日韩欧美第一区| 一本色道久久综合亚洲精品按摩| 久久国产精品色| 亚洲丰满少妇videoshd| 国产精品女同互慰在线看| 日韩欧美一级在线播放| 91国在线观看| 91麻豆高清视频| 丁香激情综合五月| 国产麻豆午夜三级精品| 日日夜夜免费精品| 亚洲国产精品精华液网站| 亚洲乱码精品一二三四区日韩在线| 久久久一区二区| 亚洲精品一区二区三区精华液 | 激情综合色综合久久| 亚洲国产欧美另类丝袜| 亚洲人成人一区二区在线观看| 国产亚洲成av人在线观看导航| 日韩欧美国产一区在线观看| 亚洲精品在线一区二区| 欧美日韩免费高清一区色橹橹| 在线免费观看不卡av| 91麻豆高清视频| 在线观看不卡视频| 在线精品视频免费观看| 91久久精品一区二区| 日本韩国欧美一区二区三区| 一本久久综合亚洲鲁鲁五月天| av不卡在线播放| 99国产精品国产精品久久| 91一区二区在线观看| 91片在线免费观看| 欧美日韩精品一区二区三区蜜桃| 欧美午夜精品免费| 欧美一卡2卡3卡4卡| 日韩欧美国产成人一区二区| 精品久久久影院| 国产亚洲综合色| 中文字幕在线观看一区| 亚洲精品久久久蜜桃| 亚洲一区二区三区精品在线| 日日夜夜精品视频天天综合网| 麻豆精品国产91久久久久久| 狠狠色综合播放一区二区| 精品亚洲porn| 成人午夜电影小说| 色综合咪咪久久| 欧美三级在线视频| 欧美www视频| 国产精品久久久久久久午夜片| 亚洲色图丝袜美腿| 日韩不卡在线观看日韩不卡视频| 久热成人在线视频| 成人黄色片在线观看| 制服丝袜在线91| 久久久久国产一区二区三区四区| 国产精品嫩草影院av蜜臀| 亚洲国产中文字幕在线视频综合| 久久精品久久精品| 91美女片黄在线| 欧美sm极限捆绑bd| 中文字幕一区二区不卡| 日日摸夜夜添夜夜添国产精品| 国产成人免费视| 欧美视频一区二区| 久久久久9999亚洲精品| 亚洲成人av电影| 成人一区二区三区在线观看| 这里只有精品99re| ...xxx性欧美| 六月丁香婷婷色狠狠久久| 91网站最新地址| 日韩精品一区二区三区视频 | 国模无码大尺度一区二区三区| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 97se狠狠狠综合亚洲狠狠| 欧美一区二区黄| 亚洲激情自拍偷拍| 国产成人av电影在线播放| 91精品国产福利| 亚洲猫色日本管| 丁香桃色午夜亚洲一区二区三区| 欧美日韩你懂的| 亚洲欧美日韩国产综合| 国产大陆精品国产| 欧美一激情一区二区三区| 一区二区三区在线观看网站| 国产麻豆成人精品| 91精品国产综合久久香蕉麻豆| 亚洲精品国产视频| 国产成人aaa| 国产日韩欧美电影| 国产制服丝袜一区| 欧美一级黄色大片| 五月天欧美精品| 欧美性一区二区| 亚洲激情校园春色| 91视频在线观看| 国产精品毛片大码女人| 国产成人在线免费观看| 精品区一区二区| 蜜桃视频免费观看一区| 欧美日韩成人高清| 亚洲va韩国va欧美va| 在线观看成人小视频| 一区二区三区在线免费播放| 一本色道久久加勒比精品 | 97精品电影院| 6080yy午夜一二三区久久| 一区二区三区产品免费精品久久75| 成人app在线|