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

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

?? udplib.c

?? Unix環境下的udp編程庫。
?? C
字號:
#define _UDPLIB_C

#include "udplib.h"

/*
 * Open the network connection for the server.
 *  nSockFd    :  the udp socket file identifier.
 *  sService   :  the name of the service we provide.
 *  nLocalPort :  if nonzero, this is the port to listen on
 *		          overrides the standard port for the service.
 *  noblock    :  if nonzero, not block while receiving.
 */
int openUdpConn(int *nSockFd, char *sService, int nLocalPort, int noblock)
{
	struct servent		*sp;
	struct sockaddr_in	udp_srv_addr;
	int    nRecvBuffSize;

	*nSockFd = -1;
	sp = NULL;
	if ( sService!=NULL )
	{
		/*
		 * We weren't started by a master daemon.
		 * We have to create a socket ourselves and bind our well-known
		 * address to it.
		 */
		if ( (sp = getservbyname(sService, "udp"))==NULL )
		{
			perror( "getservbyname" );
			fprintf(stderr, "openUdpConn: unknown service: %s/udp\n", sService);
		}
		if ( nLocalPort>0 && sp!=NULL )
			sp->s_port = htons(nLocalPort);	/* caller's value */
	}
	if ( ((*nSockFd)=socket(AF_INET, SOCK_DGRAM, 17))<0 )
	{
		perror( "socket" );
		fprintf( stderr, "openUdpConn: can't create datagram socket\n" );
		return -1;
	}
	/*
	 * Bind our local address so that any client can send to us.
	 */
	bzero( (char *)&udp_srv_addr, sizeof(udp_srv_addr) );
	udp_srv_addr.sin_family = AF_INET;
	udp_srv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
	if ( sp!=NULL )
		udp_srv_addr.sin_port = sp->s_port;
	else if ( nLocalPort>0 )
		udp_srv_addr.sin_port = htons(nLocalPort);
	else
	{
		fprintf( stderr, "openUdpConn: no probable port\n" );
		return -1;
	}
	if ( bind(*nSockFd, (struct sockaddr *)&udp_srv_addr,
					sizeof(udp_srv_addr))<0 )
	{
		perror( "bind" );
		fprintf( stderr, "openUdpConn: can't bind local address\n" );
		return -1;
	}
	if ( noblock )
	{
		/*
		 * Set the socket to nonblocking, since program won't invoke
		 * us unless there's a datagram ready for us to read.
		 */
		noblock = 1;
		if ( ioctl( *nSockFd, FIONBIO, &noblock)<0 )
		{
			perror( "ioctl" );
			fprintf( stderr, "openUdpNet: non-block failure\n" );
			return -1;
		}
	}
    /*
     * Set receive buffer size for udp
     */
/*
    nRecvBuffSize = 512*1024;
    setsockopt(*nSockFd, SOL_SOCKET, SO_RCVBUF, &nRecvBuffSize, sizeof(nRecvBuffSize));
*/

	return 0;
}	/* end openUdpConn() */

/*
 * Receive a packet from the other end.
 * Return the length of packet,
 *  nSockFd  :  the udp socket file identifier.
 *  sBuff    :	the contents of packet that we received.
 *  nMaxLen  :	the maximum length of contents for receiving.
 *  fromaddr :	the address of the other end which sends this record.
 *  fromport :	the port of the other end which sends this record.
 */
int recvPacketFromUdp(int nSockFd, char *sBuff, int nMaxLen,
                      u_long *fromaddr, u_short *fromport)
{
	struct sockaddr_in	udp_cli_addr;
	int			addrlen, buflen;
	int			packetlen;

	addrlen = sizeof( udp_cli_addr );
	if ( (buflen=recvfrom( nSockFd, sBuff, nMaxLen, 0,
			(struct sockaddr *)&udp_cli_addr, &addrlen ))<0 )
		return (-1);
	*fromaddr = udp_cli_addr.sin_addr.s_addr;
	*fromport = udp_cli_addr.sin_port;

	sBuff[buflen] = '\0';
	sscanf( sBuff, "%4d", &packetlen );
	if ( packetlen>0 && packetlen<nMaxLen )
	{
		memcpy( sBuff, sBuff+sizeOfPckLen, packetlen );
		sBuff[packetlen] = '\0';
	} 
	else
		return (-1);

	return (packetlen);
}	/* end recvPacketFromUdp() */

/*
 * Send a record to the other end.
 * Return the length of record, -1 if failed or not sent.
 *  nSockFd  :  the udp socket file identifier.
 *  sBuff    :  the contents of record that we send.
 *  nLen     :  the length of contents.
 *  toaddr   :  the address of the other end which we send to.
 *  toport   :  the port of the other end which we send to.
 */
int sendPacketToUdp(int nSockFd, char *sBuff, int nLen,
	            u_long toaddr, u_short toport)
{
	struct sockaddr_in	udp_cli_addr;
	char			sendbuff[MaxCommBuff];
	static int		addrlen = sizeof(udp_cli_addr);

	udp_cli_addr.sin_family = AF_INET;
	udp_cli_addr.sin_addr.s_addr = toaddr;
	udp_cli_addr.sin_port = toport;

	sprintf( sendbuff, "%04d", nLen );
	if ( sBuff!=NULL && nLen>0 )
		memcpy( sendbuff+sizeOfPckLen, sBuff, nLen );
	else
		return -1;

	nLen += sizeOfPckLen;
	sendbuff[nLen] = '\0';
	if ( sendto( nSockFd, sendbuff, nLen, 0,
			(struct sockaddr *)&udp_cli_addr, addrlen )<0 )
		return (-1);

	return (nLen-sizeOfPckLen);
}	/* end sendPacketToUdp() */

/*
 * Close the connection.
 */
void closeUdpConn(int nSockFd)
{
	if ( nSockFd>=0 )
		close( nSockFd );
}	/* end closeUdpConn() */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产va精品久久久不卡综合| 国产自产视频一区二区三区| 日韩av一二三| 国产一区二区精品久久| 日本高清不卡视频| 久久嫩草精品久久久久| 亚洲二区视频在线| 成人国产精品免费观看动漫| 欧美精品一二三四| 亚洲视频狠狠干| 国产一区二区91| 欧美日韩精品是欧美日韩精品| 国产欧美综合在线| 久久99精品久久久久久国产越南| 色综合亚洲欧洲| 中文字幕国产一区| 国产一区二区0| 日韩欧美亚洲国产精品字幕久久久| 亚洲视频在线一区| 国产 日韩 欧美大片| 欧美一二三四区在线| 一级日本不卡的影视| www.亚洲色图| 国产欧美日韩精品在线| 国内外成人在线| 欧美一区二区三区人| 亚洲成a人片在线不卡一二三区| www.亚洲精品| 国产精品视频一区二区三区不卡| 精品一区二区av| 日韩精品专区在线影院观看| 午夜精品久久久久久久久久| 欧美在线观看一区二区| 亚洲视频1区2区| 99久久综合国产精品| 欧美激情一区在线观看| 成人免费视频一区| 日本一区二区三区高清不卡 | 国产精品福利一区二区| 久久99精品国产91久久来源| 欧美一区二区日韩| 久久精品99久久久| 2021中文字幕一区亚洲| 国产伦精品一区二区三区免费 | 欧美日韩精品一区二区三区四区| 一区二区三区四区乱视频| 91丝袜高跟美女视频| 亚洲欧美偷拍三级| 欧美午夜精品久久久| 五月天精品一区二区三区| 欧美一区二区视频网站| 久久99精品国产麻豆婷婷洗澡| 欧美不卡视频一区| 成人涩涩免费视频| 亚洲综合免费观看高清完整版在线| 欧美亚洲日本一区| 久久超碰97中文字幕| 日本一区二区在线不卡| 在线亚洲一区二区| 日韩高清一区二区| 国产欧美日韩另类一区| 色吧成人激情小说| 久久精品国产精品青草| 国产精品人人做人人爽人人添| 色婷婷av一区二区| 免费在线视频一区| 国产精品理论在线观看| 在线观看三级视频欧美| 天天色 色综合| 国产日韩精品一区二区浪潮av| 色综合天天综合网国产成人综合天 | 欧美性xxxxxx少妇| 久久99国内精品| 亚洲人一二三区| 日韩三级中文字幕| 色综合天天综合狠狠| 青青草原综合久久大伊人精品| 欧美激情艳妇裸体舞| 欧美无乱码久久久免费午夜一区 | 日韩欧美久久久| 不卡的av在线播放| 蜜臀久久99精品久久久画质超高清 | 午夜精品福利一区二区蜜股av| 精品国产91亚洲一区二区三区婷婷| 免费在线观看视频一区| 国产精品三级视频| 日韩一区二区在线看片| 色香蕉成人二区免费| 婷婷综合五月天| 亚洲图片欧美激情| 久久久久久久久久久电影| 3atv一区二区三区| 91麻豆国产自产在线观看| 国产精品一区三区| 日av在线不卡| 亚洲成人动漫av| 国产精品免费人成网站| 久久婷婷久久一区二区三区| 欧美日韩国产美女| 欧美在线短视频| 99久久精品免费观看| 国产精品自拍三区| 久久精品99国产精品| 午夜视频一区在线观看| 一区二区三区欧美| 亚洲欧洲无码一区二区三区| 久久久久久亚洲综合影院红桃| 91精品国产综合久久久久久久久久| 99精品国产99久久久久久白柏| 国产不卡免费视频| 国产精品白丝av| 国产综合色视频| 久久99精品久久久久久国产越南 | 欧美三区免费完整视频在线观看| 成人精品一区二区三区四区| 国产一区二区三区日韩| 久久99精品国产.久久久久| 麻豆精品一区二区综合av| 日韩av电影天堂| 免费看欧美美女黄的网站| 手机精品视频在线观看| 日韩国产欧美三级| 毛片不卡一区二区| 精品亚洲免费视频| 粉嫩av一区二区三区| 成人成人成人在线视频| 91网站在线播放| 欧美午夜视频网站| 欧美人牲a欧美精品| 欧美一区二区三区四区在线观看| 欧美一卡二卡三卡| 久久众筹精品私拍模特| 中文一区一区三区高中清不卡| 国产精品天美传媒| 亚洲黄网站在线观看| 五月综合激情日本mⅴ| 日本成人在线视频网站| 经典三级视频一区| 99久久er热在这里只有精品66| 日本丰满少妇一区二区三区| 欧美日韩成人一区二区| xf在线a精品一区二区视频网站| 国产欧美一区二区在线观看| 亚洲欧美另类图片小说| 天天免费综合色| 国产成人aaa| 在线观看91视频| 欧美一级国产精品| 国产欧美一区二区精品性| 亚洲色图在线看| 免费成人av资源网| caoporen国产精品视频| 欧美丰满嫩嫩电影| 国产精品网站一区| 亚欧色一区w666天堂| 国产乱码一区二区三区| 91久久线看在观草草青青| 日韩亚洲欧美一区| 亚洲免费色视频| 久久99精品久久久久久久久久久久| 成人av片在线观看| 日韩欧美三级在线| 一片黄亚洲嫩模| 国产成人在线观看免费网站| 欧美视频在线不卡| 国产精品区一区二区三| 日韩精品一区第一页| 不卡影院免费观看| 日韩天堂在线观看| 亚洲男帅同性gay1069| 国产精品影视在线| 91精品国产入口| 亚洲精品老司机| 成人免费视频视频在线观看免费| 欧美妇女性影城| 伊人一区二区三区| 国产99久久久久| 日韩精品中文字幕一区二区三区| 亚洲人精品午夜| 国产成人av一区二区三区在线观看| 555www色欧美视频| 一区二区在线免费| 99热国产精品| 国产精品久久久久久久岛一牛影视 | 国产精品乱码一区二区三区软件 | 国产成人99久久亚洲综合精品| 制服丝袜激情欧洲亚洲| 亚洲美女在线国产| www.欧美.com| 欧美激情一区在线观看| 精品一区二区三区免费观看 | 99精品视频一区二区三区| 亚洲一区二区精品久久av| 国产精品自拍网站| 久久久精品影视| 久久电影网站中文字幕| 日韩欧美在线网站| 美女高潮久久久| 日韩一区二区高清| 麻豆国产精品官网|