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

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

?? unix_socket.c

?? 一個收集所有最基本功能的函數庫;所有的函數都是盡量短小和簡單 使用 doxygen 生成文檔 所有代碼以在 Linux 系統上可以編譯并運行為準;每當在 lib 目錄里增加了一個功能函數
?? C
字號:
/*************************************************************************** *            unix_socket.c * *  Tue May 29 11:02:59 2007 *  Copyright  2007  kf701 *  Email <kf701.ye AT gmail.com> ****************************************************************************//* *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program 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 General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#include <sys/socket.h>#include <sys/un.h>#include "kf701.h"/** * @brief open a new UNIX SOCKET fd * * @return socket fd or -1 on error */int unix_socket_new(void){		int sockfd = socket (AF_LOCAL, SOCK_DGRAM, 0);	struct timeval tv;	tv.tv_sec = 2;	tv.tv_usec = 0;		if ( sockfd < 0 )		return -1;	if (setsockopt(sockfd,SOL_SOCKET,SO_RCVTIMEO,&tv,sizeof(tv)) < 0)	{		close(sockfd);		return -1 ;	}			return sockfd;}/** * @brief free a UNIX SOCKET fd and related path */void unix_socket_free(int sockfd){	if ( sockfd < 0 )		return ;		struct sockaddr_un unaddr;			socklen_t len = sizeof(unaddr);	memset(&unaddr, 0, len);	int ret = getsockname ( sockfd , (struct sockaddr*)&unaddr , &len );	close(sockfd);	if ( ret == 0 && strlen(unaddr.sun_path) > 0 )		unlink(unaddr.sun_path);	return ;}/** * @brief open a new UNIX SOCKET fd and bind on UNIX_PATH * * @return socket fd or -1 on error */int unix_socket_new_listen(const char *unix_path) {	if( NULL == unix_path )		return -1;	int listenfd;	struct sockaddr_un servaddr;			unlink( unix_path ) ;	if ( 0 == access(unix_path, F_OK) )		return -1;	listenfd = socket (AF_LOCAL, SOCK_DGRAM, 0);		if ( listenfd < 0 )		return -1;		bzero (&servaddr, sizeof (servaddr));	servaddr.sun_family = AF_LOCAL;	strcpy (servaddr.sun_path,unix_path);			if (bind(listenfd, (struct sockaddr *) &servaddr, sizeof (servaddr)) < 0) 	{		unlink(unix_path);		close(listenfd);		return -1;	} 	struct timeval tv;	tv.tv_sec = 2;	tv.tv_usec = 0;		if (setsockopt(listenfd,SOL_SOCKET,SO_RCVTIMEO,&tv,sizeof(tv)) < 0)	{		unlink(unix_path);		close(listenfd);		return -1 ;	}			return listenfd;}/** * @brief send data to unix socket through to_path * * @param sockfd unix socket fd * @param to_path send target path * @param data send data * @param size of data * * @return  * On success, these calls return the number of characters sent.  * On error, -1 is returned, and errno is set appropriately. */int32_t unix_socket_send(int sockfd , const char *to_path, const char *data, uint32_t size){	struct sockaddr_un to_addr;		memset(&to_addr, 0, sizeof (to_addr));	to_addr.sun_family = AF_LOCAL;	strcpy (to_addr.sun_path , to_path); 	int32_t ret = sendto(sockfd , data , size ,0, (struct sockaddr*)&to_addr,sizeof(to_addr));	return ret;}/**  * @brief UNIX SOCKET server use select * * Open a listen socket and read data, * then deleve data to FUNC, the user defined  * FUNC deal with data. *  * Note: dup sun_path and buf before create thread in FUNC * * @param unix_path listen path * @param psize the UDP server MAX size protocol data * @param func user defined FUNC for deal with data */void unix_socket_server( const char *unix_path, uint32_t psize, un_data_func func){	if( psize <= 0 || func == NULL )	{		sys_message("%s,%d: argu err\n", __FILE__, __LINE__);		return ;	}		int sockfd = unix_socket_new_listen( unix_path );	if( -1 == sockfd )	{		sys_message("%s,%d: open sock err,%m\n", __FILE__, __LINE__);		return ;	}	struct sockaddr_un  addr;	socklen_t len = sizeof( struct sockaddr_un );		fd_set readset;	FD_ZERO(&readset);	FD_SET( sockfd , &readset );		int max_fd = sockfd , select_ret, nread;	uint8_t buf[ psize ];		while( 1 )	{		select_ret = select(max_fd+1 , &readset , NULL , NULL , NULL);		if ( select_ret < 0 )		{			sys_message("%s,%d: select err,%m\n", __FILE__, __LINE__);			continue;		}			if (  FD_ISSET ( sockfd , &readset)  )		{			nread = recvfrom(sockfd, (void*)buf, sizeof(buf) ,0, (struct sockaddr*)&addr, &len);			if( nread <= 0 )			{				sys_message("%s: recvfrom err\n", __func__);				continue;			}			sys_log("%s,%d: read from = %s\n", __FILE__, __LINE__, addr.sun_path);			sys_log("%s,%d: read data len = %d\n", __FILE__, __LINE__, nread);			/* Note: dup sun_path and buf before create thread in func */			func( addr.sun_path, buf, nread );		}	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国模一区二区三区白浆| 亚洲一区二区在线视频| 欧美优质美女网站| 97久久精品人人做人人爽50路| 国产一区二区久久| 久久66热re国产| 国内久久婷婷综合| 国产一区二区不卡老阿姨| 激情综合网最新| 国产成都精品91一区二区三| 国产精选一区二区三区| 国产成a人亚洲| 一本一道波多野结衣一区二区| 91蝌蚪porny| 欧美日韩亚洲综合在线| 在线播放中文一区| 亚洲精品在线一区二区| 国产色产综合产在线视频| 日韩毛片一二三区| 亚洲激情第一区| 亚洲你懂的在线视频| 亚洲人成在线播放网站岛国| 亚洲精品中文在线影院| 日韩精品成人一区二区在线| 精品制服美女丁香| 成人动漫精品一区二区| 欧美视频在线观看一区二区| 91精品国模一区二区三区| 久久久久久久电影| 亚洲精品伦理在线| 美国av一区二区| 播五月开心婷婷综合| 欧美日韩和欧美的一区二区| 日韩欧美电影一二三| 国产亚洲欧美激情| 亚洲永久精品大片| 国产一区二区不卡在线 | 一级中文字幕一区二区| 天天影视网天天综合色在线播放 | 久久亚洲私人国产精品va媚药| 国产欧美日本一区二区三区| 亚洲无人区一区| 国产一区二区三区在线观看免费| 91蝌蚪国产九色| 2014亚洲片线观看视频免费| 一区二区在线观看免费视频播放| 黄色资源网久久资源365| 91亚洲国产成人精品一区二三| 欧美一区午夜视频在线观看| 国产精品福利一区二区三区| 免费精品视频在线| 色综合久久久久综合| 精品久久久三级丝袜| 一区二区三区在线免费| 国产成人午夜99999| 制服丝袜亚洲播放| 亚洲美女在线一区| 福利视频网站一区二区三区| 91精品国产一区二区| 一区二区三区欧美日韩| 成人免费高清视频| 久久久久久久精| 91蜜桃网址入口| 久久精品亚洲一区二区三区浴池| 午夜精品久久久久久久| 色婷婷av一区| 国产精品福利一区二区三区| 精品一区免费av| 91精品国产高清一区二区三区 | 欧美日韩国产美| 亚洲欧美区自拍先锋| 丰满白嫩尤物一区二区| 91精品在线观看入口| 亚洲成av人综合在线观看| 色综合中文字幕| 精品国产1区二区| 亚洲成人中文在线| 欧美色图在线观看| 午夜国产不卡在线观看视频| 欧美在线一二三四区| 伊人婷婷欧美激情| 色成人在线视频| 亚洲一区二区欧美| 欧美精品少妇一区二区三区| 天天综合天天综合色| 欧美一卡二卡三卡| 国产揄拍国内精品对白| 久久久亚洲欧洲日产国码αv| 国产专区欧美精品| 国产情人综合久久777777| 国产mv日韩mv欧美| 亚洲图片激情小说| 欧美日韩aaaaaa| 麻豆成人久久精品二区三区红 | 国产成人av影院| 亚洲欧洲精品天堂一级| 色综合色狠狠综合色| 亚洲图片有声小说| 欧美xxxxx牲另类人与| 国产福利一区二区三区视频在线 | 亚洲午夜精品一区二区三区他趣| 在线免费一区三区| 麻豆国产精品一区二区三区| 久久久综合视频| 色哦色哦哦色天天综合| 日日摸夜夜添夜夜添国产精品 | 日本乱人伦一区| 免费人成精品欧美精品| 国产欧美日韩中文久久| 在线免费精品视频| 久久精品国产免费看久久精品| 国产欧美日韩三级| 欧美日韩一卡二卡三卡| 国产揄拍国内精品对白| 一区二区三区在线影院| 精品国产91乱码一区二区三区| 99久久99久久精品免费观看| 手机精品视频在线观看| 国产精品人人做人人爽人人添| 色婷婷一区二区| 国产一区二区网址| 亚洲午夜在线观看视频在线| 国产亚洲欧美一级| 色香蕉久久蜜桃| 国产精品亚洲视频| 丝袜美腿成人在线| 亚洲视频免费观看| 精品国产精品网麻豆系列 | 天天免费综合色| 国产精品传媒在线| 2020国产精品| 日韩亚洲欧美一区| 欧美三级一区二区| 成人91在线观看| 国产乱子轮精品视频| 污片在线观看一区二区| 亚洲另类中文字| 中文久久乱码一区二区| 欧美xingq一区二区| 欧美日本一区二区在线观看| 91在线视频免费观看| 国产一区91精品张津瑜| 日韩专区一卡二卡| 午夜久久电影网| 一区av在线播放| 亚洲精品久久7777| 国产精品卡一卡二卡三| 久久综合九色综合欧美就去吻| 91麻豆精品国产自产在线| 欧洲国内综合视频| 91福利视频久久久久| 成人黄色一级视频| 成人午夜又粗又硬又大| 韩国成人精品a∨在线观看| 麻豆91在线播放免费| 日韩电影免费在线看| 日韩精品一二区| 美女脱光内衣内裤视频久久网站| 首页国产丝袜综合| 捆绑调教美女网站视频一区| 另类欧美日韩国产在线| 蜜桃视频一区二区三区 | 久久夜色精品国产噜噜av| 91精品午夜视频| 日韩欧美一二区| 久久久久久亚洲综合影院红桃| 久久婷婷色综合| 亚洲国产精品传媒在线观看| 中文字幕一区二区三区色视频| 一区二区中文视频| 亚洲精品日韩综合观看成人91| 亚洲另类中文字| 日本午夜一区二区| 国产综合久久久久影院| 成人激情开心网| 色噜噜狠狠色综合中国| 91麻豆精品国产自产在线| 精品黑人一区二区三区久久| 中文字幕av一区二区三区免费看| 亚洲欧美韩国综合色| 亚洲成av人片一区二区三区| 精品一二三四在线| 波多野结衣中文字幕一区二区三区| 日本国产一区二区| 日韩欧美久久久| 亚洲日本一区二区| 奇米影视7777精品一区二区| 国产91丝袜在线18| 欧美在线你懂得| 久久午夜羞羞影院免费观看| 亚洲裸体在线观看| 精品一区二区三区免费毛片爱| 成人av电影免费在线播放| 欧美精品日韩一本| 国产精品五月天| 美女视频网站久久| 色狠狠色噜噜噜综合网| 欧美精品一区二区久久久| 亚洲天堂免费在线观看视频| 蜜桃一区二区三区在线观看|