📄 main.c
字号:
#include "gprs_dll.h"
#include "signal.h"
#include "string.h"
#include <time.h>
#define NULL 0
int i_packamount;
//如果使用了多线程编程
//注意对下列变量的保护
//可通过设置互斥责信号量来处理
int user_count;
user_info user[200];
//end
//u can start a timer to refresh user list
void poll_user_table()
{
int urcount,i,listcount;
char mess[256];
time_t tt,t_update;
user_info ui;
//lock this variable
user_count = 0;
urcount=get_max_user_amount();
for (i=0;i<urcount;i++)
{
get_user_at(i,&ui);
if (ui.m_status==1)
{
//根据实际需要,决定是否维护DTU列表
tt = time(NULL);
t_update=(time_t )ui.m_update_time;
if ((tt-t_update)>=60)//60s
{
do_close_one_user((unsigned char*)(ui.m_userid),mess);
continue;
}
memcpy(&user[user_count],&ui,sizeof(user_info));
user_count++;
}
}
}
void data_process(data_record *pdr,char *mess)
{
int i,ret;
int urcount;
user_info ui;
switch (pdr->m_data_type)
{
case 0x01:
printf("DTU login -- %s\n",pdr->m_userid);
//poll_user_table();
break;
case 0x02:
printf("DTU logout -- %s\n",pdr->m_userid);
//poll_user_table();
break;
case 0x09:
i_packamount++;
printf("[ %d ] %s - %d - %s",i_packamount,pdr->m_userid,pdr->m_data_len,asctime(localtime(&pdr->m_recv_date)));
printf("Recieve From DTU:%s\n",pdr->m_data_buf);
/*将接收到的数据发送给其他在线DTU*/
for (i=0;i<user_count;i++)
{
if(strcmp(user[i].m_userid,pdr->m_userid))
{
printf("发送信息到[%s]\n",user[i].m_userid);
ret=do_send_user_data(user[i].m_userid,pdr->m_data_buf,pdr->m_data_len,mess);
if(ret<0)
{
printf("mess:[%s]\n",mess);
}
else
printf("发送数据成功!\n");
}
}
break;
default:
NULL;
}
//printf("hello\r\n");
//sleep(2);
}
main()
{
char mess[512];
data_record dr;
int i,ret;
int urcount;
user_info ui;
memset(user,0,12);
i_packamount=0;
printf("-------------begin\n");
start_gprs_server(data_process,5002,mess,0,0);
//start_gprs_server(NULL,5002,mess,00,00);
printf("%s\n",mess);
//pause();
for (;;)
{
printf("..............\r\n");
poll_user_table();
for (i=0;i<user_count;i++)
{
printf("发送信息到[%s]\n",user[i].m_userid);
ret=do_send_user_data(user[i].m_userid,"hello\r\n",7,mess);
if(ret<0)
{
printf("mess:[%s]\n",mess);
}
else
printf("发送数据成功!\n");
}
sleep(2);
}
printf("==========programe terminated\n==========");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -