⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 channel.c

📁 为了满足每个项目终端的需求
💻 C
字号:
/*****************************************************************************		FileName:       channel.c*		Revision:       2008/07/25*		Author:			Du Biao***************************************************************************** DESCRIPTION:	Init,read,write and close the UDP socket chanel** COPYRIGHT:	(C) HEBEI FAR-EAST HARRIS COMMUNICATIONS COMPANY LTD.* HISTORY:	08/07/25:		Initial verison by Du Biao**/#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <fcntl.h>#include <termios.h>#include <unistd.h>#include <strings.h>#include "../inc/version.h"#include "../inc/gendef.h"#include "../inc/msgpkt.h"#include "../inc/channel.h"//#undef CHANNEL_DEBUG#define CHANNEL_DEBUG#ifdef CHANNEL_DEBUG	#define CHANNEL_DPRINTF( x... )	 printf("CHANNEL: \t" ##x)#else	#define CHANNEL_DPRINTF( x... )#endif/************************************************************************* GLOBAL DEFINITIONS**************************************************************************/struct sockaddr gPeerAddr; /* my address information *//************************************************************************* CHN_Open*************************************************************************FUNCTION: Open  udp socketINPUTS:   port: UDP listen portOUTPUTS:  noneRETURN:   dev handle, -1 is error**/int CHN_Open(int port){	int ret;	int sock_fd;	struct sockaddr_in my_addr; /* my address information */	if((sock_fd = socket(AF_INET,SOCK_DGRAM,0))== -1)	{		perror("socket");		return -1;	}		CHANNEL_DPRINTF("CHN_Open,socket success! \n");	/*set paramters of the sockaddr_in struct paramter my_addr*/	my_addr.sin_family = AF_INET;	my_addr.sin_port = htons(port);	//my_addr.sin_port = port;	my_addr.sin_addr.s_addr = INADDR_ANY;	bzero(&(my_addr.sin_zero),8);	if((ret = bind(sock_fd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr)))== -1)	{		perror("bind");		return -1;	}	CHANNEL_DPRINTF("CHN_Open,bind success!\n");	return sock_fd;}/************************************************************************* CHN_Send*************************************************************************FUNCTION: Send data to udp portINPUTS:   dev:device handle;  buf:buffer to write		  buf_len:len of data to writeOUTPUTS:  noneRETURN:   data len sent**/int CHN_Send(int dev,U8* buf,U32 buf_len){	int ret;	CHANNEL_DPRINTF("CHN_Send buf[2] is %2x,buf[3] is %2x \n", buf[2],buf[3]);#if 1	if((ret = sendto(dev, buf, buf_len, 0, &gPeerAddr, sizeof(gPeerAddr)))== -1)	{		perror("send");		return -1;    }#endif	CHANNEL_DPRINTF("CHN_Send,send success!\n");	return ret;}/************************************************************************* CHN_Recv*************************************************************************FUNCTION: read data from udp portINPUTS:   dev:device handle;  buf:buffer to save read data          buf_len:len of data to readOUTPUTS:  noneRETURN:   data len read**/int CHN_Recv(int dev,U8* buf,U32 buf_len){	int ret;	int recv_len;	recv_len = sizeof(gPeerAddr);#if 1	if((ret = recvfrom(dev, buf, buf_len, 0, &gPeerAddr, &recv_len))== -1)	{		perror("receive\n");		return -1;	}#endif	//CHANNEL_DPRINTF("CHN_Recv:receive buf is %s\n",buf);	CHANNEL_DPRINTF("CHN_Recv,read success!\n");	return ret;}/************************************************************************* CHN_Close*************************************************************************FUNCTION: close udp portINPUTS:   dev:device handleOUTPUTS:  noneRETURN:   0 is ok, -1 is error**/int CHN_Close(int dev){	int ret;	if((ret = close(dev))== -1);	{ 		perror("close"); 		return -1;	}	CHANNEL_DPRINTF("CHN_Close,close success!\n");	return ret;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -