📄 tserverlink_entity.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 + -