appmon.c

来自「有线电视系统前端设备复用器原代码。 用语接受卫星信号」· C语言 代码 · 共 100 行

C
100
字号
/*------------------------------------------------------------------*/
/* appmon.c                                                         */
/* udp socket to send debug info                                    */
/*------------------------------------------------------------------*/
#include "constant.h"
#include "structure.h"
#include "command.h"
#include "tspack.h"
#include "pna.h"
#include "psos.h"
extern void my_Delay(unsigned long int dly_ms);

#define APP_MON_PORT  0x8888
#define QN_APPMONSEND "APPM"

void tk_appmon(void)
{
	int i;
	int rc;
	int s;
	struct 		  sockaddr_in BroadcastAddr,MultiplexerAddr;
	unsigned long qid;
	MESSAGE       Msg;
	long          b=1;

	CreateQueue(QN_APPMONSEND,&qid);

	MultiplexerAddr.sin_family		= AF_INET;					 
	MultiplexerAddr.sin_port		= htons(APP_MON_PORT);			 
	MultiplexerAddr.sin_addr.s_addr = htonl(INADDR_ANY);	 
	for(i=0;i<8;i++)
		MultiplexerAddr.sin_zero[i] = 0;					 

	BroadcastAddr.sin_family		= AF_INET;					 
	BroadcastAddr.sin_port			= htons(APP_MON_PORT);			 
	BroadcastAddr.sin_addr.s_addr	= htonl(0xFFFFFFFF);	 
	for(i=0;i<8;i++)
		BroadcastAddr.sin_zero[i] = 0;					 

	for(;;)
	{
		s=socket(AF_INET, SOCK_DGRAM, UDP);
		if(s == -1) 
		{
			my_Delay(100);	/*by xu*/
			Display("appmon: socket create error, error code=0x%x\n",errno);
			continue;
		}

		rc=setsockopt(s,SOL_SOCKET,SO_BROADCAST,(char *)&b,4);
		if(rc == -1) 
		{
			my_Delay(100);/*by xu*/	
			Display("appmon: socket set broadcast option error, error code=0x%x\n",errno);
			continue;
		}

		rc=setsockopt(s,SOL_SOCKET,SO_DONTROUTE,(char *)&b,4);
		if(rc == -1) 
		{
			my_Delay(100);/*by xu*/	
			Display("appmon: socket set dontroute option error, error code=0x%x\n",errno);
			continue;
		}

		rc = bind(s, (struct sockaddr *)&MultiplexerAddr, sizeof(MultiplexerAddr));
		if(rc == -1)
		{
			my_Delay(100);/*by xu*/			 
			Display("appmon: socket bind error, error code=0x%x\n",errno);
			continue;
		}

		break;
	}

	for(;;)
	{
		rc=ReceiveQueue(QN_APPMONSEND,Q_WAIT,0,&Msg);
		if(rc)
		{
			my_Delay(100);/*by xu*/
			
			Display("appmon: receive message failed!\n");

			continue;
		}
		else
		{
			if(Msg.Pdata == NULL)
				continue;
			rc=sendto(s,(char *)Msg.Pdata,Msg.Length,0,(struct sockaddr *)&BroadcastAddr,sizeof(struct sockaddr));
			if(rc<0)
				Display("appmon: socket send error, error code=0x%x\n",errno);
			MemFree((char *)Msg.Pdata);
		}
	
	}
}

⌨️ 快捷键说明

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