📄 clientsockmsg.cpp
字号:
#include "stdafx.h"
DWORD WINAPI ThreadFuncForMsg(LPVOID lpParameter);
BOOL CheckSocketError(LPARAM lParam);
VOID WINAPI OnTimerProc(HWND hWnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime);
void OnCommand(WPARAM wParam, LPARAM lParam);
BOOL InitThread(LPTHREAD_START_ROUTINE lpRoutine);
extern SOCKET g_csock;
extern HWND g_hMainWnd;
extern HWND g_hStatusBar;
extern HWND g_hToolBar;
HANDLE g_hMsgThread = INVALID_HANDLE_VALUE;
CWHQueue g_xMsgQueue;
static char WorkBuff[8192];
static int nWorkBuffLen;
LPARAM OnClientSockMsg(WPARAM wParam, LPARAM lParam)
{
switch (WSAGETSELECTEVENT(lParam))
{
case FD_CONNECT:
{
DWORD dwThreadIDForMsg = 0;
if (CheckSocketError(lParam))
{
dwThreadIDForMsg = 0;
if (InitThread(ThreadFuncForMsg))
// if ((g_hMsgThread = CreateThread(NULL, 0, ThreadFuncForMsg, NULL, 0, &dwThreadIDForMsg)) != INVALID_HANDLE_VALUE)
{
KillTimer(g_hMainWnd, _ID_TIMER_CONNECTSERVER);
SetTimer(g_hMainWnd, _ID_TIMER_KEEPALIVE, 5000, (TIMERPROC)OnTimerProc);
InsertLogMsg(IDS_CONNECT_LOGINSERVER);
SendMessage(g_hStatusBar, SB_SETTEXT, MAKEWORD(1, 0), (LPARAM)_TEXT("Connected"));
}
}
else
{
closesocket(g_csock);
g_csock = INVALID_SOCKET;
SetTimer(g_hMainWnd, _ID_TIMER_CONNECTSERVER, 10000, (TIMERPROC)OnTimerProc);
}
break;
}
case FD_CLOSE:
{
closesocket(g_csock);
g_csock = INVALID_SOCKET;
OnCommand(IDM_STOPSERVICE, 0);
break;
}
case FD_READ:
{
int nSocket = 0;
char *pszFirst = NULL, *pszEnd = NULL;
UINT nRecv = 0;
ioctlsocket((SOCKET)wParam, FIONREAD, (u_long *)&nRecv);
if (nRecv)
{
char *pszPacket = new char[nRecv + 1];
nRecv = recv((SOCKET)wParam, pszPacket, nRecv, 0);
pszPacket[nRecv] = '\0';
if (!(g_xMsgQueue.PushQ((BYTE *)pszPacket)))
InsertLogMsg(_TEXT("[INFO] Not enough queue(g_xMsgQueue) buffer."));
}
break;
}
}
return 0L;
}
void SendExToServer(char *pszPacket)
{
/* int nTotalSendBytes = 0;
while (TRUE)
{
if ((nLen - nTotalSendBytes <= 0) || g_csock == INVALID_SOCKET)
return;
nTotalSendBytes += send(g_csock, pszData, nLen - nTotalSendBytes, 0);
if (nTotalSendBytes < nLen)
pszData += (nLen - nTotalSendBytes);
else
return;
} */
DWORD dwSendBytes;
WSABUF buf;
buf.len = memlen(pszPacket) - 1;
buf.buf = pszPacket;
WSASend(g_csock, &buf, 1, &dwSendBytes, 0, NULL, NULL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -