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

📄 helper.cpp

📁 嵌入式LINUX9应用程序开发详解中串口编程实例
💻 CPP
字号:
#include "stdafx.h"

#include <process.h>

#include "common.h"

///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////

void Init()

{

	InitWinSock();

	memset(g_szServerName,0,128);

	//gethostname(g_szServerName,128);

	////////////////////////////////////////////////////////////

	//读IP

	HKEY hkey;

	if(RegOpenKeyEx(

		HKEY_LOCAL_MACHINE,

		"SOFTWARE\\GameKing",

		0L,

		KEY_ALL_ACCESS,

		&hkey)==ERROR_SUCCESS)

	{

		DWORD dwdatatype,dwlen;

		dwlen=sizeof(g_szDBServerIP);

		if(RegQueryValueEx(

			hkey,

			"DBServerIP",

			NULL,

			&dwdatatype,

			(LPBYTE)g_szDBServerIP,

			&dwlen)!=ERROR_SUCCESS)

		{

			//error

		}

	}

	else

	{

		//error

	}

	///////////////////////////////////////////////////////////////////////////////////////////

	////////////////////////////////////////////////////////////

	//读HOST NAME

	//HKEY hkey;

	if(RegOpenKeyEx(

		HKEY_LOCAL_MACHINE,

		"SOFTWARE\\GameKing",

		0L,

		KEY_ALL_ACCESS,

		&hkey)==ERROR_SUCCESS)

	{

		DWORD dwdatatype,dwlen;

		dwlen=sizeof(g_szServerName);

		if(RegQueryValueEx(

			hkey,

			"DBServerName",

			NULL,

			&dwdatatype,

			(LPBYTE)g_szServerName,

			&dwlen)!=ERROR_SUCCESS)

		{

			//error

		}

	}

	else

	{

		//error

	}



	///////////////////////////////////////////////////////////////////////////////////////////

	//InitSimpleMAPI();

	//SendMail();

	//从注册表中读出g_szSMTPServerIP

}

void ExitInstance()

{

	WSACleanup();

}

void InitCriticalSections()

{

}



//Common Helpers

void InitWinSock()

{

	WSADATA wsaData;

	WSAStartup(WINSOCK_VERSION,&wsaData);

}



///////////////////////////////////////////////////////////////////////////////////////////////

void GetPeerIPBySocket(SOCKET sock,char *pszIP)

{

	struct sockaddr  addrname;    

	int namelen = sizeof(struct sockaddr);

	//getsockname(sock,&addrname,&namelen);//获取本机IP,

	getpeername(sock,&addrname,&namelen);//获取对端IP

	struct sockaddr_in addr;

	memcpy((char *)&addr,(char *)&addrname,sizeof(sockaddr));

	strcpy(pszIP,inet_ntoa((in_addr)addr.sin_addr));

}

///////////////////////////////////////////////////////////////////////////////////////////////

int RecvFixedBytes(SOCKET s,char *buf,int nBytesWantToRecv)

{

	int cnt;

	int rcnt;

	for(cnt= 0; cnt < nBytesWantToRecv; cnt+= rcnt) 

	{

		rcnt= recv(s,buf+cnt,(unsigned) (nBytesWantToRecv-cnt),0);

		if( rcnt <= 0 ) 

			return SOCKET_ERROR;

	}

	return cnt;

}

int AsyncReadLine(SOCKET hSocket,char *buf, int count)

{

	char *ptr = buf;

	int nRead = 0;

	char c;



	while(nRead < count) 

	{

		int nBytesRecv = recv(hSocket,&c,1,0);



		if ( nBytesRecv == 1 ) 

		{

			nRead ++;

			*ptr++ = c;

			if ( c == '\n' ) 

			{

				break;

			}

		} 

	}

	*ptr = '\0';

	return nRead;

}

///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////

//线程代码

///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////

void ListenThread(LPVOID hAcceptSocket )

{	

	TRACE("----------------------------------------------------------\n");

	TRACE("Listen/AcceptThread (ID=0x%x) started !\n",GetCurrentThreadId());

	TRACE("----------------------------------------------------------\n");



	SOCKET hAcceptGameSocket = (SOCKET)hAcceptSocket;

	for (;;) 

	{

		SOCKET	hPlayerCommSocket;

		struct sockaddr RemoteAddr;

		int AddrLen = sizeof(struct sockaddr);

		if ((hPlayerCommSocket = accept (hAcceptGameSocket, (struct sockaddr FAR *)&RemoteAddr,

											(int FAR* ) &AddrLen))!=INVALID_SOCKET)

		{

			TRACE("Accept new client connection on socket: %d\n",hPlayerCommSocket);

			_beginthread(PlayerCommThread,0,(LPVOID)hPlayerCommSocket);

		}

	}

}

⌨️ 快捷键说明

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