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

📄 tserverlink_entity.h

📁 短信网管的原代码。用于与sp通信
💻 H
字号:
// TServerLink_Entity.h: interface for the TServerLink_Entity class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_TSERVERLINK_ENTITY_H__E6375EFD_D9A9_4BE1_B79E_82B091A5DF0A__INCLUDED_)
#define AFX_TSERVERLINK_ENTITY_H__E6375EFD_D9A9_4BE1_B79E_82B091A5DF0A__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "Entity_Base.h"
#include "ServerSocket.h"
#include "DataDef.h"
#include "Afx.h"

struct STRUCT_SOCKET
{
	BOOL bUsed;
	int  nIdle;
	SOCKET Socket;
};

DWORD WINAPI SgipLinkCheckThread(LPVOID lpParam);
DWORD WINAPI SgipAcceptThread(LPVOID lpParam);
DWORD WINAPI MainClientThread(LPVOID lpParam);

class TServerLink_Entity : public TBase_Entity  
{
	public:
       TServerLink_Entity()
	   {
		   for(int i = 0;i<128;i++)
		   {
			   m_ServerSocket[i].bUsed = FALSE;
			   m_ServerSocket[i].nIdle = 0;
			   m_ServerSocket[i].Socket = 0;
			   dwAcceptTest = 0;
		   }
		   dwAlarm = 1;
		   DWORD dwThreadId;
  		   h_LinkTestThread = CreateThread(NULL, 0, SgipLinkCheckThread, this, 0, &dwThreadId);  
	   };
       ~TServerLink_Entity()
	   {
		   TerminateThread(h_MainCmppThread,0);
		   //CloseHandle(h_MainCmppThread);
	   };

       BOOL Init(char* pServerIp,int nPort)
       {
		   TBase_Entity::Init(pServerIp, nPort,TRUE);
		   m_pTmpServerSocket = NULL;
		   //创建协议处理线程
           DWORD dwThreadId;
           h_MainCmppThread = CreateThread(NULL, 0, SgipAcceptThread, this, 0, &dwThreadId);  
           if(h_MainCmppThread == NULL)
               return FALSE;
           
		   return TRUE;
       };
       BOOL Uninit()
       {
  		   shutdown(m_hMainSocket,SD_BOTH);
		   TRACE("%d\r\n",m_hMainSocket);
           closesocket(m_hMainSocket);

		   RstTcp();
		   //delete m_pServerSocket;
		   //m_pServerSocket = NULL;
		   //if(WaitForSingleObject(h_MainCmppThread,500) != 0)
		   TerminateThread(h_MainCmppThread,0);
		   CloseHandle(h_MainCmppThread);
		   return TRUE;
       };
		DWORD  WaitConnect(CServerSocket& ClientSocket)
		{
			sockaddr_in SockAddr;
			int buflen=sizeof(sockaddr_in);
			//changed by dsc
			ClientSocket.m_hSocket=accept(m_hMainSocket,(sockaddr*)&SockAddr,&buflen);
			if(ClientSocket.m_hSocket == INVALID_SOCKET)
			{
				return FALSE;
			}
			char* pServerIp=inet_ntoa(SockAddr.sin_addr);
			strcpy(ClientSocket.m_Ip,pServerIp);
		   //创建协议处理线程
           DWORD dwThreadId;
           ClientSocket.h_MainCmppThread = CreateThread(NULL, 0, MainClientThread, (void*)&ClientSocket, 0, &dwThreadId);  
           //ClientSocket.h_LinkTestThread = CreateThread(NULL, 0, SgipLinkCheckThread, (void*)&ClientSocket, 0, &dwThreadId);  
           //if(ClientSocket.h_LinkTestThread == NULL)
               //return FALSE;
           if(ClientSocket.h_MainCmppThread == NULL)
               return FALSE;
			m_Status = E_CONNECTED;

			//??????????????????//
			ClientSocket.m_Status = E_CONNECTED;
			//??????????????????//
			return TRUE;
		};

		void SysBeep()
		{
			for(int i=0;i<3;i++)
			{
				Beep(2000,300);
				Beep(1000,300);
				Beep(1800,500);
			}
		};


	   BOOL OnTcpDataInd(char Buff[],int BufLen); //收到TCP消息
       int  Login_Rep();        //登陆服务器
       int  Logout();       //退出服务器
       BOOL SendLinkTest_Rep(); //发送测试消息
	   //此两个函数无任何功能
       int  Login(){return 0;};//???
       BOOL SendLinkTest(){return TRUE;};//???
	private:
	   HANDLE h_MainCmppThread;
	   HANDLE h_LinkTestThread;
	public:
	   CServerSocket* m_pTmpServerSocket;
	   STRUCT_SOCKET  m_ServerSocket[128];
	   DWORD dwAcceptTest;
	   DWORD dwAlarm;
};

#endif // !defined(AFX_TSERVERLINK_ENTITY_H__E6375EFD_D9A9_4BE1_B79E_82B091A5DF0A__INCLUDED_)

⌨️ 快捷键说明

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