Exemplo n.º 1
0
    //-----------------------------------------------------------------------------
    void ServerNetApplyManager::onConnected(NetEventConnect* netEvent)
    {
        IServerDllInterface* serverInterface = ServerMain::getInstance().getServerDllInterface();
        if (serverInterface)
        {
            if (netEvent->getHandle()==mServerDriver)
            {
				//U64 serverUniqueFlag = netEvent->getNetAddress().getIP() * ::GetCurrentProcessId();
				setConnectServerLoginState(netEvent->getNetAddress().getUin(),netEvent->getID(),true,false);
				Sleep(5);
				loginServer( netEvent->getID(),mUniqueFlag);
				//MG_LOG(out_error,"onConnect %s %d \n",netEvent->getNetAddress().getIPStr(),netEvent->getNetAddress().getPort());
            }
        }
    }
Exemplo n.º 2
0
Arquivo: pet.c Projeto: mmaizi/PET
//外网模式下,服务器在线测试
USER_FUNC void pingTest(void *arg) 
{
	while (getPingServerThreadFlag()) 
	{
		sleep(5);
		pingServer();
		sleep(120);
		u_printf("check ping result");
		if (getPingResultFlag()) 
		{
			//if ping result is correct
			setPingResultFlag(0);
		}
		else 
		{
			//若ping服务器无反应,则释放资源并让主板重新上线
			resetPingData();
			//关闭socket连接
			
			closeSocket(getSocketFd());

			sleep(10);
      //10s后主板开始重新上线
			initPingData();

			connectServer();

			loginServer();

			if (hfthread_create(recvTest, "RECV_THREAD", 256, NULL,HFTHREAD_PRIORITIES_LOW, NULL, NULL) != HF_SUCCESS) 
			{
				u_printf("create recvMessage thread fail\n");

			}

			if (hfthread_create(pingTest, "PING_THREAD", 256, NULL,HFTHREAD_PRIORITIES_LOW, NULL, NULL) != HF_SUCCESS) 
			{
				u_printf("create pingServer thread fail\n");

			}

		}
	}
}
Exemplo n.º 3
0
    //-----------------------------------------------------------------------------
    void ServerNetApplyManager::onAccept(NetEventAccept* netEvent)
    {
        IServerDllInterface* serverInterface = ServerMain::getInstance().getServerDllInterface();
        if (serverInterface)
        {
            if (netEvent->getHandle() == mClientDriver)
            {
                serverInterface->onClientConnected(netEvent->getID(),&netEvent->getNetAddress(),netEvent->getNetConnect());
            }else
            if (netEvent->getHandle() == mServerDriver)
            {				
				if (isAllowedConnect(netEvent->getNetAddress().getIPStr()))
				{
					//setConnectServerLoginState(netEvent->getNetAddress().getUin(),true,false);
					loginServer( netEvent->getID(),mUniqueFlag);
				}
				else
				{
					closeServer(netEvent->getID());
				}  
            }
        }
    }
Exemplo n.º 4
0
Arquivo: pet.c Projeto: mmaizi/PET
//主函数
int app_main(void) 
{
	time_t now = time(NULL);
	hfdbg_set_level(3);
	HF_Debug(DEBUG_LEVEL,"[FILE DEMO]sdk version(%s),the app_main start time is %d %s\n",hfsys_get_sdk_version(), now, ctime(&now));
	if (hfgpio_fmap_check(HFM_TYPE_LPB100) != 0) 
	{
		while (1) 
		{
			HF_Debug(DEBUG_ERROR, "gpio map file error\n");
			msleep(1000);
		}
		//return 0;
	}

	while (!hfnet_wifi_is_active()) 
	{
		msleep(50);
	}

	if (hfnet_start_assis(ASSIS_PORT) != HF_SUCCESS) 
	{
		HF_Debug(DEBUG_WARN, "start httpd fail\n");
	}

	if (hfnet_start_httpd(HFTHREAD_PRIORITIES_MID) != HF_SUCCESS) 
	{
		HF_Debug(DEBUG_WARN, "start httpd fail\n");
	}
#ifndef TEST_UART_SELECT		
	// if (hfnet_start_uart(HFTHREAD_PRIORITIES_LOW, NULL) != HF_SUCCESS) 
	// {
		// HF_Debug(DEBUG_WARN, "start uart fail!\n");
	// }
#endif	
	sleep(2);
	
	
	//创建一个udp方便调试程序
	if((udp_fd = socket(AF_INET,SOCK_DGRAM,0)) == -1)
	{
		u_printf("create socket error!\n");
		exit(1);
	}
	
	bzero(&address,sizeof(address));
	address.sin_family=AF_INET;
	address.sin_addr.s_addr=inet_addr("115.28.179.114");
	address.sin_port=htons(8123);
	
	//在主函数中打开串口
	if ((huart = hfuart_open(0))<0)
	{
		u_printf("open_port error!");
		exit(1);
	}
	
	/*内网模式:初始化相关数据,开启udp服务,开启接收线程*/
	 /*
	//初始化udp相关数据
	initUdpAddrData();
	//开启udp服务
	startUdpServer();
	
	//创建一个线程接收udp数据 
	if (hfthread_create(udpRecvTest, "RECV_THREAD", 256, NULL,HFTHREAD_PRIORITIES_LOW, NULL, NULL) != HF_SUCCESS) {
		u_printf("create udpRecv thread fail\n");
		return 0;
	}
	
*/
	
	
	
	/*外网模式:初始化相关数据,并连接登陆服务器,开启相关线程*/
 
	//初始化数据
	initData();
  //连接服务器
	connectServer();

	//登陆服务器 
	loginServer();

	//创建一个线程接收数据 
	if (hfthread_create(recvTest, "RECV_THREAD", 256, NULL,HFTHREAD_PRIORITIES_LOW, NULL, NULL) != HF_SUCCESS) 
	{
		u_printf("create recvMessage thread fail\n");
		return 0;
	}
	
  //创建一个线程监测主板的在线状态
	if (hfthread_create(pingTest, "RECON_THREAD", 256, NULL,HFTHREAD_PRIORITIES_LOW, NULL, NULL) != HF_SUCCESS) 
	{
		u_printf("create pingServer thread fail\n");
		return 0;
	}
	
	

  
	return 1;

}
Exemplo n.º 5
0
void main()
{
	int sfd = tcp_connect();
	int epfd = epoll_create(1);
	struct epoll_event evs[2];
	memset(evs,0,sizeof(struct epoll_event));
	epfd_add(sfd,epfd);  
	epfd_add(0,epfd);                        //注册epoll
	char buf[1024];
	char filename[20] = {0};
	char *pname;
	int ret;
	int n;
	int i;
	loginServer(sfd);
	while(1)
	{
		memset(evs,0,sizeof(struct epoll_event));
		n = epoll_wait(epfd,evs,2,-1);
		if(n > 0)
		{
			for(i = 0; i < n; i++)
			{
				if(evs[i].data.fd == 0)
				{
					memset(buf,0,sizeof(buf));
					ret = read(0,buf,sizeof(buf));
					if(ret == 0)//ctrl+d
					{
						printf("bye\n");
						close(sfd);
						exit(0);
					}
					send(sfd,buf,strlen(buf)-1,0);
					if(strncmp("puts",buf,4) == 0)
					{
						memset(filename,0,sizeof(filename));
						strcpy(filename,buf+4);
						pname = filename;
						while(*pname == ' ') pname++;
						send_file(sfd,pname);
					}
				}
				if(evs[i].data.fd == sfd)
				{
					if(strncmp("gets",buf,4) == 0)
					{
						memset(buf,0,sizeof(buf));
						recv(sfd,buf,1,0);
						if(buf[0] == '1')
						{
							 recv_file(sfd);
						}
						else if(buf[0] == '2')
						{
							 mmaprecefile(sfd);
						}
						else
							printf("file not exist\n");
					}
					else
					{
						memset(buf,0,sizeof(buf));
						ret =recv(sfd,buf,sizeof(buf),0);
						if(ret == 0)
						{
							printf("bye sfd\n");
							close(sfd);
							exit(-1);
						}
						system("clear");
						printf("%s\n",buf);
					}
				}
			}
		}
	}
	close(sfd);
	return;
}