commit 58f8f19b0f4d8fa4a697d91216a149950a3cea2e Author: Hipstercat Date: Tue Jun 18 15:48:29 2019 +0200 initial commit diff --git a/Debug/GCKMS.exe b/Debug/GCKMS.exe new file mode 100644 index 0000000..1afeddf Binary files /dev/null and b/Debug/GCKMS.exe differ diff --git a/Debug/GCKMS.ilk b/Debug/GCKMS.ilk new file mode 100644 index 0000000..e400182 Binary files /dev/null and b/Debug/GCKMS.ilk differ diff --git a/Debug/GCKMS.obj b/Debug/GCKMS.obj new file mode 100644 index 0000000..6877679 Binary files /dev/null and b/Debug/GCKMS.obj differ diff --git a/Debug/GCKMS.pch b/Debug/GCKMS.pch new file mode 100644 index 0000000..aaa5e1a Binary files /dev/null and b/Debug/GCKMS.pch differ diff --git a/Debug/GCKMS.pdb b/Debug/GCKMS.pdb new file mode 100644 index 0000000..bd9dc76 Binary files /dev/null and b/Debug/GCKMS.pdb differ diff --git a/Debug/GCKMS.res b/Debug/GCKMS.res new file mode 100644 index 0000000..fb39447 Binary files /dev/null and b/Debug/GCKMS.res differ diff --git a/Debug/GCKMSDlg.obj b/Debug/GCKMSDlg.obj new file mode 100644 index 0000000..6fef86c Binary files /dev/null and b/Debug/GCKMSDlg.obj differ diff --git a/Debug/StdAfx.obj b/Debug/StdAfx.obj new file mode 100644 index 0000000..0998889 Binary files /dev/null and b/Debug/StdAfx.obj differ diff --git a/Debug/WSTCPS.obj b/Debug/WSTCPS.obj new file mode 100644 index 0000000..9485eb4 Binary files /dev/null and b/Debug/WSTCPS.obj differ diff --git a/Debug/WSUDPS.obj b/Debug/WSUDPS.obj new file mode 100644 index 0000000..5638238 Binary files /dev/null and b/Debug/WSUDPS.obj differ diff --git a/Debug/vc60.idb b/Debug/vc60.idb new file mode 100644 index 0000000..87b9c0f Binary files /dev/null and b/Debug/vc60.idb differ diff --git a/Debug/vc60.pdb b/Debug/vc60.pdb new file mode 100644 index 0000000..108c231 Binary files /dev/null and b/Debug/vc60.pdb differ diff --git a/GCKMS.APS b/GCKMS.APS new file mode 100644 index 0000000..8b6506c Binary files /dev/null and b/GCKMS.APS differ diff --git a/GCKMS.clw b/GCKMS.clw new file mode 100644 index 0000000..b6c7046 --- /dev/null +++ b/GCKMS.clw @@ -0,0 +1,60 @@ +; CLW file contains information for the MFC ClassWizard + +[General Info] +Version=1 +LastClass=CGCKMSDlg +LastTemplate=CAsyncSocket +NewFileInclude1=#include "stdafx.h" +NewFileInclude2=#include "GCKMS.h" + +ClassCount=4 +Class1=CGCKMSApp +Class2=CGCKMSDlg + +ResourceCount=2 +Resource1=IDR_MAINFRAME +Class3=CWSUDPS +Class4=CWSTCPS +Resource2=IDD_GCKMS_DIALOG + +[CLS:CGCKMSApp] +Type=0 +HeaderFile=GCKMS.h +ImplementationFile=GCKMS.cpp +Filter=N +LastObject=CGCKMSApp + +[CLS:CGCKMSDlg] +Type=0 +HeaderFile=GCKMSDlg.h +ImplementationFile=GCKMSDlg.cpp +Filter=W +BaseClass=CDialog +VirtualFilter=dWC +LastObject=CGCKMSDlg + + + +[DLG:IDD_GCKMS_DIALOG] +Type=1 +Class=CGCKMSDlg +ControlCount=0 + +[CLS:CWSUDPS] +Type=0 +HeaderFile=WSUDPS.h +ImplementationFile=WSUDPS.cpp +BaseClass=CAsyncSocket +Filter=N +VirtualFilter=q +LastObject=CWSUDPS + +[CLS:CWSTCPS] +Type=0 +HeaderFile=WSTCPS.h +ImplementationFile=WSTCPS.cpp +BaseClass=CAsyncSocket +Filter=N +VirtualFilter=q +LastObject=CWSTCPS + diff --git a/GCKMS.cpp b/GCKMS.cpp new file mode 100644 index 0000000..840efb2 --- /dev/null +++ b/GCKMS.cpp @@ -0,0 +1,45 @@ +// GCKMS.cpp : Defines the class behaviors for the application. +// + +#include "stdafx.h" +#include "GCKMS.h" +#include "GCKMSDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CGCKMSApp + +BEGIN_MESSAGE_MAP(CGCKMSApp, CWinApp) + //{{AFX_MSG_MAP(CGCKMSApp) + //}}AFX_MSG + ON_COMMAND(ID_HELP, CWinApp::OnHelp) +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CGCKMSApp construction + +CGCKMSApp::CGCKMSApp() +{ +} + +///////////////////////////////////////////////////////////////////////////// +// The one and only CGCKMSApp object + +CGCKMSApp theApp; + +///////////////////////////////////////////////////////////////////////////// +// CGCKMSApp initialization + +BOOL CGCKMSApp::InitInstance() +{ + CGCKMSDlg dlg; + m_pMainWnd = &dlg; + AfxSocketInit(); + dlg.DoModal(); + return FALSE; +} diff --git a/GCKMS.dsp b/GCKMS.dsp new file mode 100644 index 0000000..1ffab80 --- /dev/null +++ b/GCKMS.dsp @@ -0,0 +1,158 @@ +# Microsoft Developer Studio Project File - Name="GCKMS" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=GCKMS - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "GCKMS.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "GCKMS.mak" CFG="GCKMS - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "GCKMS - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "GCKMS - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "GCKMS - Win32 Release" + +# PROP BASE Use_MFC 5 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 5 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /machine:I386 +# ADD LINK32 /nologo /subsystem:windows /machine:I386 + +!ELSEIF "$(CFG)" == "GCKMS - Win32 Debug" + +# PROP BASE Use_MFC 5 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 5 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "GCKMS - Win32 Release" +# Name "GCKMS - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\GCKMS.cpp +# End Source File +# Begin Source File + +SOURCE=.\GCKMS.rc +# End Source File +# Begin Source File + +SOURCE=.\GCKMSDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.cpp +# ADD CPP /Yc"stdafx.h" +# End Source File +# Begin Source File + +SOURCE=.\WSTCPS.cpp +# End Source File +# Begin Source File + +SOURCE=.\WSUDPS.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\GCKMS.h +# End Source File +# Begin Source File + +SOURCE=.\GCKMSDlg.h +# End Source File +# Begin Source File + +SOURCE=.\Resource.h +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.h +# End Source File +# Begin Source File + +SOURCE=.\WSTCPS.h +# End Source File +# Begin Source File + +SOURCE=.\WSUDPS.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# Begin Source File + +SOURCE=.\res\GCKMS.ico +# End Source File +# Begin Source File + +SOURCE=.\res\GCKMS.rc2 +# End Source File +# End Group +# End Target +# End Project diff --git a/GCKMS.dsw b/GCKMS.dsw new file mode 100644 index 0000000..8070ca2 --- /dev/null +++ b/GCKMS.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "GCKMS"=".\GCKMS.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/GCKMS.h b/GCKMS.h new file mode 100644 index 0000000..3063de8 --- /dev/null +++ b/GCKMS.h @@ -0,0 +1,47 @@ +// GCKMS.h : main header file for the GCKMS application +// + +#if !defined(AFX_GCKMS_H__1EFE3324_8581_4FF8_81C9_36AC4815918D__INCLUDED_) +#define AFX_GCKMS_H__1EFE3324_8581_4FF8_81C9_36AC4815918D__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#ifndef __AFXWIN_H__ + #error include 'stdafx.h' before including this file for PCH +#endif + +#include "resource.h" // main symbols + +///////////////////////////////////////////////////////////////////////////// +// CGCKMSApp: +// See GCKMS.cpp for the implementation of this class +// + +class CGCKMSApp : public CWinApp +{ +public: + CGCKMSApp(); + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CGCKMSApp) + public: + virtual BOOL InitInstance(); + //}}AFX_VIRTUAL + +// Implementation + + //{{AFX_MSG(CGCKMSApp) + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_GCKMS_H__1EFE3324_8581_4FF8_81C9_36AC4815918D__INCLUDED_) diff --git a/GCKMS.ncb b/GCKMS.ncb new file mode 100644 index 0000000..e87dc3c Binary files /dev/null and b/GCKMS.ncb differ diff --git a/GCKMS.opt b/GCKMS.opt new file mode 100644 index 0000000..43318a8 Binary files /dev/null and b/GCKMS.opt differ diff --git a/GCKMS.plg b/GCKMS.plg new file mode 100644 index 0000000..e550752 --- /dev/null +++ b/GCKMS.plg @@ -0,0 +1,37 @@ + + +
+

Build Log

+

+--------------------Configuration: GCKMS - Win32 Debug-------------------- +

+

Command Lines

+Creating temporary file "C:\DOCUME~1\XT\LOCALS~1\Temp\RSP1EC.tmp" with contents +[ +/nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /Fp"Debug/GCKMS.pch" /Yu"stdafx.h" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c +"C:\Documents and Settings\XT\My Documents\ChateX\ChateX source code\GCKMS\GCKMSDlg.cpp" +] +Creating command line "cl.exe @C:\DOCUME~1\XT\LOCALS~1\Temp\RSP1EC.tmp" +Creating temporary file "C:\DOCUME~1\XT\LOCALS~1\Temp\RSP1ED.tmp" with contents +[ +/nologo /subsystem:windows /incremental:yes /pdb:"Debug/GCKMS.pdb" /debug /machine:I386 /out:"Debug/GCKMS.exe" /pdbtype:sept +".\Debug\GCKMS.obj" +".\Debug\GCKMSDlg.obj" +".\Debug\StdAfx.obj" +".\Debug\WSTCPS.obj" +".\Debug\WSUDPS.obj" +".\Debug\GCKMS.res" +] +Creating command line "link.exe @C:\DOCUME~1\XT\LOCALS~1\Temp\RSP1ED.tmp" +

Output Window

+Compiling... +GCKMSDlg.cpp +Linking... + + + +

Results

+GCKMS.exe - 0 error(s), 0 warning(s) +
+ + diff --git a/GCKMS.rc b/GCKMS.rc new file mode 100644 index 0000000..492adb2 --- /dev/null +++ b/GCKMS.rc @@ -0,0 +1,182 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "#define _AFX_NO_SPLITTER_RESOURCES\r\n" + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" + "#ifdef _WIN32\r\n" + "LANGUAGE 9, 1\r\n" + "#pragma code_page(1252)\r\n" + "#endif //_WIN32\r\n" + "#include ""res\\GCKMS.rc2"" // non-Microsoft Visual C++ edited resources\r\n" + "#include ""afxres.rc"" // Standard components\r\n" + "#endif\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDR_MAINFRAME ICON DISCARDABLE "res\\GCKMS.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_GCKMS_DIALOG DIALOGEX 0, 0, 280, 140 +STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_VISIBLE | WS_CLIPSIBLINGS | + WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_APPWINDOW +CAPTION "GCKMS" +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN +END + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,0 + PRODUCTVERSION 1,0,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "\0" + VALUE "FileDescription", "GCKMS\0" + VALUE "FileVersion", "1, 0, 0, 0\0" + VALUE "InternalName", "GCKMS\0" + VALUE "OriginalFilename", "GCKMS.EXE\0" + VALUE "ProductName", "GCKMS\0" + VALUE "ProductVersion", "1, 0, 0, 0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_GCKMS_DIALOG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 273 + TOPMARGIN, 7 + BOTTOMMARGIN, 133 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDP_SOCKETS_INIT_FAILED "Windows sockets initialization failed." +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define _AFX_NO_SPLITTER_RESOURCES +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE 9, 1 +#pragma code_page(1252) +#endif //_WIN32 +#include "res\GCKMS.rc2" // non-Microsoft Visual C++ edited resources +#include "afxres.rc" // Standard components +#endif + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/GCKMSDlg.cpp b/GCKMSDlg.cpp new file mode 100644 index 0000000..57e3eb8 --- /dev/null +++ b/GCKMSDlg.cpp @@ -0,0 +1,358 @@ +// GCKMSDlg.cpp : implementation file +// + +#include "stdafx.h" +#include "GCKMS.h" +#include "GCKMSDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CGCKMSDlg dialog + +CGCKMSDlg::CGCKMSDlg(CWnd* pParent /*=NULL*/) + : CDialog(CGCKMSDlg::IDD, pParent) +{ + //{{AFX_DATA_INIT(CGCKMSDlg) + //}}AFX_DATA_INIT + m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); +} + +void CGCKMSDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CGCKMSDlg) + //}}AFX_DATA_MAP +} + +BEGIN_MESSAGE_MAP(CGCKMSDlg, CDialog) + //{{AFX_MSG_MAP(CGCKMSDlg) + ON_WM_CLOSE() + ON_WM_ENDSESSION() + ON_WM_TIMER() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CGCKMSDlg message handlers + +void CGCKMSDlg::OnClose() +{ + int i; + if(m_ID_list.empty() == FALSE) + { + for(i = 0; i < m_ID_list.size(); i ++) + { + KillTimer(m_ID_list[i] + 1000); + } + } + m_ID_list.clear(); + m_IP_list.clear(); + m_port_list.clear(); + m_wsUDPS.Close(); + for(i = 0; i < m_wsTCPS_list.size(); i ++) + { + m_wsTCPS_list[i]->m_Data = ""; + m_wsTCPS_list[i]->m_dta.clear(); + m_wsTCPS_list[i]->ShutDown(2); + m_wsTCPS_list[i]->Close(); + delete m_wsTCPS_list[i]; + } + m_wsTCPS_list.clear(); + DestroyWindow(); + CDialog::OnClose(); +} + +void CGCKMSDlg::OnCancel() +{ + OnClose(); +} + +void CGCKMSDlg::OnOK() +{ +} + +void CGCKMSDlg::OnEndSession(BOOL bEnding) +{ + OnClose(); +} + +BOOL CGCKMSDlg::OnInitDialog() +{ + CDialog::OnInitDialog(); + CString txt; + CWSTCPS *wsTCPS; + SetIcon(m_hIcon, TRUE); + if(m_wsUDPS.Create(27900, SOCK_DGRAM, FD_READ) != FALSE) + { + txt = " - UDP server running"; + } + +// test.Create(111, SOCK_DGRAM, FD_READ); +// test.SendTo("\\heartbeat\\8911\\gamename\\giants", 31, 27900, "gckms.no-ip.org"); + + m_wsTCPS_list.push_back(wsTCPS); + m_wsTCPS_list[0] = new CWSTCPS; + if(m_wsTCPS_list[0]->Create(28900, SOCK_STREAM, FD_ACCEPT | FD_READ | FD_CLOSE) != FALSE) + { + if(m_wsTCPS_list[0]->Listen() != FALSE) + { + SetTimer(ID_TCPS_TIMER, 30000, NULL); + if(txt == "") + { + txt = " - TCP server running"; + } + else + { + txt = txt + " | TCP server running"; + } + } + } + SetWindowText("GCKMS" + txt); + return TRUE; +} + +void CGCKMSDlg::OnPaint() +{ + if (IsIconic()) + { + CPaintDC dc(this); + SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); + int cxIcon = GetSystemMetrics(SM_CXICON); + int cyIcon = GetSystemMetrics(SM_CYICON); + CRect rect; + GetClientRect(&rect); + int x = (rect.Width() - cxIcon + 1) / 2; + int y = (rect.Height() - cyIcon + 1) / 2; + dc.DrawIcon(x, y, m_hIcon); + } + else + { + CDialog::OnPaint(); + } +} + +HCURSOR CGCKMSDlg::OnQueryDragIcon() +{ + return (HCURSOR) m_hIcon; +} + +void CGCKMSDlg::OnUDPS_Receive(int nErrorCode) +{ + if(nErrorCode == 0) + { + DWORD rcv; + int rcv2; + CString IP; + UINT port; + char *dta; + CString txt; + m_wsUDPS.IOCtl(FIONREAD, &rcv); + dta = new char[rcv + 1]; + rcv2 = m_wsUDPS.ReceiveFrom(dta, rcv, IP, port); + dta[rcv2] = '\0'; + txt = dta; + delete [] dta; + if(IP.Left(7) == "192.168") + { + IP = inet_ntoa(*((struct in_addr*)gethostbyname("gckms.no-ip.org")->h_addr_list[0])); + } + if(m_IP_list.size() < 1000 && (txt.Left(1) == "0" || txt.Left(1) == "1")) + { + if(m_ID_list.empty() != FALSE && txt.Left(1) == "0") + { + int i; + m_ID_list.push_back(0); + m_IP_list.push_back(IP); + m_port_list.push_back(atoi(txt.Mid(1))); + SetTimer(1000, 360000, NULL); + for(i = 1; i < m_wsTCPS_list.size(); i ++) + { + m_wsTCPS_list[i]->Send("00¬" + IP + "¬" + txt.Mid(1) + '\0', IP.GetLength() + txt.Mid(1).GetLength() + 5); + } + } + else + { + int i; + BOOL isIPnP; + isIPnP = FALSE; + for(i = 0; i < m_ID_list.size(); i ++) + { + if(m_IP_list[i] == IP && m_port_list[i] == atoi(txt.Mid(1))) + { + KillTimer(m_ID_list[i]); + SetTimer(m_ID_list[i] + 1000, 360000, NULL); + if(txt.Left(1) == "1") + { + int j; + CString txt2; + txt2.Format("%d", m_ID_list[i]); + for(j = 1; j < m_wsTCPS_list.size(); j ++) + { + m_wsTCPS_list[j]->Send("1" + txt2 + '\0', txt2.GetLength() + 2); + } + } + isIPnP = TRUE; + break; + } + } + if(isIPnP == FALSE && txt.Left(1) == "0") + { + int j; + BOOL isID; + for(i = 0; i <= 999; i ++) + { + isID = FALSE; + for(j = 0; j < m_ID_list.size(); j ++) + { + if(m_ID_list[j] == i) + { + isID = TRUE; + break; + } + } + if(isID == FALSE) + { + CString txt2; + m_ID_list.push_back(i); + m_IP_list.push_back(IP); + m_port_list.push_back(atoi(txt.Mid(1))); + SetTimer(i + 1000, 360000, NULL); + txt2.Format("%d", i); + for(j = 1; j < m_wsTCPS_list.size(); j ++) + { + m_wsTCPS_list[j]->Send("0" + txt2 + "¬" + IP + "¬" + txt.Mid(1) + '\0', txt2.GetLength() + IP.GetLength() + txt.Mid(1).GetLength() + 4); + } + break; + } + } + } + } + if(txt.Left(1) == "0") + { + m_wsUDPS.SendTo("\\status\\", 8, port, IP); + } + } + } +} + +void CGCKMSDlg::OnTCPS_Accept(int nErrorCode) +{ + if(m_wsTCPS_list.size() < 1001) + { + CWSTCPS *wsTCPS; + m_wsTCPS_list.push_back(wsTCPS); + m_wsTCPS_list.back() = new CWSTCPS; + m_wsTCPS_list[0]->Accept(*m_wsTCPS_list.back()); + if(m_IP_list.empty() == FALSE) + { + int i; + std::string txt; + CString txt2; + CString txt3; + std::vector dta; + for(i = 0; i < m_ID_list.size(); i ++) + { + txt2.Format("%d", m_ID_list[i]); + txt3.Format("%d", m_port_list[i]); + txt.append("0" + txt2 + "¬" + m_IP_list[i] + "¬" + txt3); + dta.insert(dta.end(), txt.begin(), txt.end()); + txt = ""; + dta.push_back('\0'); + } + m_wsTCPS_list.back()->Send(&dta[0], dta.size()); + dta.clear(); + } + } +} + +void CGCKMSDlg::OnTCPS_Receive(int nErrorCode, CWSTCPS *socket) +{ + if(nErrorCode == 0) + { + DWORD rcv; + int rcv2; + int i; + char *dta; + ((CWSTCPS*)socket)->IOCtl(FIONREAD, &rcv); + dta = new char[rcv]; + rcv2 = ((CWSTCPS*)socket)->Receive(dta, rcv); + for(i = 0; i < rcv2; i ++) + { + if(dta[i] != '\0') + { + int j; + for(j = 1; j < m_wsTCPS_list.size(); j ++) + { + if(m_wsTCPS_list[j] == socket) + { + m_wsTCPS_list[j]->m_Data = ""; + m_wsTCPS_list[j]->m_dta.clear(); + m_wsTCPS_list[j]->ShutDown(2); + m_wsTCPS_list[j]->Close(); + delete m_wsTCPS_list[j]; + m_wsTCPS_list.erase(&m_wsTCPS_list[j]); + delete [] dta; + return; + } + } + } + } + delete [] dta; + } +} + +void CGCKMSDlg::OnTCPS_Close(int nErrorCode, CWSTCPS *socket) +{ + int i; + for(i = 1; i < m_wsTCPS_list.size(); i ++) + { + if(m_wsTCPS_list[i] == socket) + { + m_wsTCPS_list[i]->m_Data = ""; + m_wsTCPS_list[i]->m_dta.clear(); + m_wsTCPS_list[i]->ShutDown(2); + m_wsTCPS_list[i]->Close(); + delete m_wsTCPS_list[i]; + m_wsTCPS_list.erase(&m_wsTCPS_list[i]); + break; + } + } +} + +void CGCKMSDlg::OnTimer(UINT nIDEvent) +{ + int i; + for(i = 0; i < m_ID_list.size(); i ++) + { + if(m_ID_list[i] + 1000 == nIDEvent) + { + int j; + CString txt2; + KillTimer(m_ID_list[i] + 1000); + txt2.Format("%d", m_ID_list[i]); + for(j = 1; j < m_wsTCPS_list.size(); j ++) + { + m_wsTCPS_list[j]->Send("2" + txt2 + '\0', txt2.GetLength() + 2); + } + m_ID_list.erase(&m_ID_list[i]); + m_IP_list.erase(&m_IP_list[i]); + m_port_list.erase(&m_port_list[i]); + break; + } + } + if(nIDEvent == ID_TCPS_TIMER) + { + for(i = 1; i < m_wsTCPS_list.size(); i ++) + { + char dta[1]; + dta[0] = '\0'; + m_wsTCPS_list[i]->Send(dta, 1); + } + } + CDialog::OnTimer(nIDEvent); +} diff --git a/GCKMSDlg.h b/GCKMSDlg.h new file mode 100644 index 0000000..09fe3d0 --- /dev/null +++ b/GCKMSDlg.h @@ -0,0 +1,67 @@ +// GCKMSDlg.h : header file +// + +#if !defined(AFX_GCKMSDLG_H__8F032D5E_A4C7_44F9_8330_C36FD40B0F2C__INCLUDED_) +#define AFX_GCKMSDLG_H__8F032D5E_A4C7_44F9_8330_C36FD40B0F2C__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +///////////////////////////////////////////////////////////////////////////// +// CGCKMSDlg dialog + +#include "vector" +#include "WSUDPS.h" +#include "WSTCPS.h" + +class CGCKMSDlg : public CDialog +{ +// Construction +public: + void OnUDPS_Receive(int nErrorCode); + void OnTCPS_Accept(int nErrorCode); + void OnTCPS_Receive(int nErrorCode, CWSTCPS *socket); + void OnTCPS_Close(int nErrorCode, CWSTCPS *socket); + CGCKMSDlg(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(CGCKMSDlg) + enum { IDD = IDD_GCKMS_DIALOG }; + //}}AFX_DATA + + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CGCKMSDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + HICON m_hIcon; + + // Generated message map functions + //{{AFX_MSG(CGCKMSDlg) + afx_msg void OnClose(); + virtual void OnCancel(); + virtual void OnOK(); + afx_msg void OnEndSession(BOOL bEnding); + virtual BOOL OnInitDialog(); + afx_msg void OnPaint(); + afx_msg HCURSOR OnQueryDragIcon(); + afx_msg void OnTimer(UINT nIDEvent); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +private: + CWSUDPS m_wsUDPS; +// CWSUDPS test; + std::vector m_wsTCPS_list; + std::vector m_ID_list; + std::vector m_IP_list; + std::vector m_port_list; +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_GCKMSDLG_H__8F032D5E_A4C7_44F9_8330_C36FD40B0F2C__INCLUDED_) diff --git a/StdAfx.cpp b/StdAfx.cpp new file mode 100644 index 0000000..65509f6 --- /dev/null +++ b/StdAfx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// GCKMS.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + + + diff --git a/StdAfx.h b/StdAfx.h new file mode 100644 index 0000000..7d2a215 --- /dev/null +++ b/StdAfx.h @@ -0,0 +1,27 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#if !defined(AFX_STDAFX_H__FE213F4D_84B8_4047_8CCA_06BB2C846C10__INCLUDED_) +#define AFX_STDAFX_H__FE213F4D_84B8_4047_8CCA_06BB2C846C10__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers + +#include // MFC core and standard components +#include // MFC extensions +#include // MFC support for Internet Explorer 4 Common Controls +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include // MFC support for Windows Common Controls +#endif // _AFX_NO_AFXCMN_SUPPORT + +#include // MFC socket extensions + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_STDAFX_H__FE213F4D_84B8_4047_8CCA_06BB2C846C10__INCLUDED_) diff --git a/WSTCPS.cpp b/WSTCPS.cpp new file mode 100644 index 0000000..7f10047 --- /dev/null +++ b/WSTCPS.cpp @@ -0,0 +1,100 @@ +// WSTCPS.cpp : implementation file +// + +#include "stdafx.h" +#include "GCKMS.h" +#include "GCKMSDlg.h" +#include "WSTCPS.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CWSTCPS + +CWSTCPS::CWSTCPS() +{ +} + +CWSTCPS::~CWSTCPS() +{ +} + + +// Do not edit the following lines, which are needed by ClassWizard. +#if 0 +BEGIN_MESSAGE_MAP(CWSTCPS, CAsyncSocket) + //{{AFX_MSG_MAP(CWSTCPS) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() +#endif // 0 + +///////////////////////////////////////////////////////////////////////////// +// CWSTCPS member functions + +void CWSTCPS::OnAccept(int nErrorCode) +{ + ((CGCKMSDlg*)AfxGetMainWnd())->OnTCPS_Accept(nErrorCode); + CAsyncSocket::OnAccept(nErrorCode); +} + +void CWSTCPS::OnReceive(int nErrorCode) +{ + ((CGCKMSDlg*)AfxGetMainWnd())->OnTCPS_Receive(nErrorCode, this); + CAsyncSocket::OnReceive(nErrorCode); +} + +void CWSTCPS::OnClose(int nErrorCode) +{ + ((CGCKMSDlg*)AfxGetMainWnd())->OnTCPS_Close(nErrorCode, this); + CAsyncSocket::OnClose(nErrorCode); +} + +void CWSTCPS::OnSend(int nErrorCode) +{ + if(nErrorCode == 0) + { + if(m_dta.empty() == FALSE) + { + int i; + int ns; + char *dta; + dta = new char[m_dta.size()]; + for(i = 0; i < m_dta.size(); i ++) + { + dta[i] = m_dta[i]; + } + ns = m_dta.size(); + m_dta.clear(); + Send(dta, ns); + delete [] dta; + } + } + CAsyncSocket::OnSend(nErrorCode); +} + +int CWSTCPS::Send(const void* lpBuf, int nBufLen, int nFlags) +{ + int i; + int ns; + char *dta; + dta = new char[nBufLen]; + memcpy(dta, lpBuf, nBufLen); + for(i = 0; i < nBufLen; i ++) + { + m_dta.push_back(dta[i]); + } + delete [] dta; + ns = CAsyncSocket::Send(lpBuf, nBufLen, nFlags); + if(ns != SOCKET_ERROR) + { + if(m_dta.empty() == FALSE) + { + m_dta.clear(); + } + } + return ns; +} diff --git a/WSTCPS.h b/WSTCPS.h new file mode 100644 index 0000000..23d7944 --- /dev/null +++ b/WSTCPS.h @@ -0,0 +1,53 @@ +#if !defined(AFX_WSTCPS_H__81D06561_4259_467F_BB88_E1DCEB1FAF3F__INCLUDED_) +#define AFX_WSTCPS_H__81D06561_4259_467F_BB88_E1DCEB1FAF3F__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// WSTCPS.h : header file +// + + + +///////////////////////////////////////////////////////////////////////////// +// CWSTCPS command target + +class CWSTCPS : public CAsyncSocket +{ +// Attributes +public: + +// Operations +public: + CWSTCPS(); + virtual ~CWSTCPS(); + +// Overrides +public: + CString m_Data; + std::vector m_dta; + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CWSTCPS) + public: + virtual void OnAccept(int nErrorCode); + virtual void OnReceive(int nErrorCode); + virtual void OnClose(int nErrorCode); + virtual void OnSend(int nErrorCode); + virtual int Send(const void* lpBuf, int nBufLen, int nFlags = 0); + //}}AFX_VIRTUAL + + // Generated message map functions + //{{AFX_MSG(CWSTCPS) + // NOTE - the ClassWizard will add and remove member functions here. + //}}AFX_MSG + +// Implementation +protected: +}; + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WSTCPS_H__81D06561_4259_467F_BB88_E1DCEB1FAF3F__INCLUDED_) diff --git a/WSUDPS.cpp b/WSUDPS.cpp new file mode 100644 index 0000000..8805957 --- /dev/null +++ b/WSUDPS.cpp @@ -0,0 +1,42 @@ +// WSUDPS.cpp : implementation file +// + +#include "stdafx.h" +#include "GCKMS.h" +#include "GCKMSDlg.h" +#include "WSUDPS.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CWSUDPS + +CWSUDPS::CWSUDPS() +{ +} + +CWSUDPS::~CWSUDPS() +{ +} + + +// Do not edit the following lines, which are needed by ClassWizard. +#if 0 +BEGIN_MESSAGE_MAP(CWSUDPS, CAsyncSocket) + //{{AFX_MSG_MAP(CWSUDPS) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() +#endif // 0 + +///////////////////////////////////////////////////////////////////////////// +// CWSUDPS member functions + +void CWSUDPS::OnReceive(int nErrorCode) +{ + ((CGCKMSDlg*)AfxGetMainWnd())->OnUDPS_Receive(nErrorCode); + CAsyncSocket::OnReceive(nErrorCode); +} diff --git a/WSUDPS.h b/WSUDPS.h new file mode 100644 index 0000000..5f3d068 --- /dev/null +++ b/WSUDPS.h @@ -0,0 +1,45 @@ +#if !defined(AFX_WSUDPS_H__8041C8E9_18CA_4A67_84E2_83189F3A0EAA__INCLUDED_) +#define AFX_WSUDPS_H__8041C8E9_18CA_4A67_84E2_83189F3A0EAA__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// WSUDPS.h : header file +// + +///////////////////////////////////////////////////////////////////////////// +// CWSUDPS command target + +class CWSUDPS : public CAsyncSocket +{ +// Attributes +public: + +// Operations +public: + CWSUDPS(); + virtual ~CWSUDPS(); + +// Overrides +public: + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CWSUDPS) + public: + virtual void OnReceive(int nErrorCode); + //}}AFX_VIRTUAL + + // Generated message map functions + //{{AFX_MSG(CWSUDPS) + // NOTE - the ClassWizard will add and remove member functions here. + //}}AFX_MSG + +// Implementation +protected: +}; + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WSUDPS_H__8041C8E9_18CA_4A67_84E2_83189F3A0EAA__INCLUDED_) diff --git a/res/GCKMS.ico b/res/GCKMS.ico new file mode 100644 index 0000000..43ea686 Binary files /dev/null and b/res/GCKMS.ico differ diff --git a/res/GCKMS.rc2 b/res/GCKMS.rc2 new file mode 100644 index 0000000..05e0687 --- /dev/null +++ b/res/GCKMS.rc2 @@ -0,0 +1,13 @@ +// +// GCKMS.RC2 - resources Microsoft Visual C++ does not edit directly +// + +#ifdef APSTUDIO_INVOKED + #error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// Add manually edited resources here... + +///////////////////////////////////////////////////////////////////////////// diff --git a/resource.h b/resource.h new file mode 100644 index 0000000..b78074a --- /dev/null +++ b/resource.h @@ -0,0 +1,20 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by GCKMS.rc +// +#define ID_TCPS_TIMER 101 +#define IDD_GCKMS_DIALOG 102 +#define IDP_SOCKETS_INIT_FAILED 103 +#define IDR_MAINFRAME 128 +#define IDC_LIST 2001 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 130 +#define _APS_NEXT_COMMAND_VALUE 32772 +#define _APS_NEXT_CONTROL_VALUE 2002 +#define _APS_NEXT_SYMED_VALUE 102 +#endif +#endif