Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
ClientSockMsg.cpp
Package: LegendOfMir2_Server020418.zip [view]
Upload User: szopptop
Upload Date: 2013-04-23
Package Size: 1047k
Code Size: 3k
Category:
Game Server Simulator
Development Platform:
Visual C++
- #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] = '';
- 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);
- }