﻿========================================================================
    控制台应用程序：DemoSocket 项目概述
========================================================================

应用程序向导已为您创建了此 DemoSocket 应用程序。

本文件概要介绍组成 DemoSocket 应用程序的
的每个文件的内容。


DemoSocket.vcproj
    这是使用应用程序向导生成的 VC++ 项目的主项目文件，
    其中包含生成该文件的 Visual C++ 的版本信息，以及有关使用应用程序向导选择的平台、配置和项目功能的信息。

DemoSocket.cpp
    这是主应用程序源文件。

/////////////////////////////////////////////////////////////////////////////
应用程序向导创建了下列资源：

DemoSocket.rc
这是程序使用的所有 Microsoft Windows 资源的列表。它包括 RES 子目录中存储的图标、位图和光标。
此文件可以直接在 Microsoft Visual C++ 中进行编辑。

Resource.h
    这是标准头文件，可用于定义新的资源 ID。
    Microsoft Visual C++ 将读取并更新此文件。

/////////////////////////////////////////////////////////////////////////////
其他标准文件：

StdAfx.h, StdAfx.cpp
    这些文件用于生成名为 DemoSocket.pch 的预编译头 (PCH) 文件和名为 StdAfx.obj 的预编译类型文件。

/////////////////////////////////////////////////////////////////////////////
其他注释：

应用程序向导使用“TODO:”注释来指示应添加或自定义的源代码部分。

/////////////////////////////////////////////////////////////////////////////
如何一步步写个简单的Lock On数据监听程序：
1.我们需要了解，要做的事情很简单，就是写个TCP/IP监听程序，监听本地某端口，以接收游戏的数据。
2.写个Socket服务程序，需要有个Server的Socket，和若干Client的Socket。
3.ServerSocket的只需一个，而在我们案例中，ClientSocket通常只有一个，所以我们在CServerSocket::OnAccept做些处理，让ServerSocket一次只接收一个连接就可以了。
4.CClientSocket::OnReceive处理接收数据，为了Fix CClientSocket关闭的一些工作，我们增加CClientSocket::OnClose的处理。
5.了解这些后，我们开始来建立工程，为了使事件更简单化，我建个Win32控制台程序并选择支持MFC，在VS2008的生成向导中，在MFC支持项打勾。
6.把原来ServerSocket和ClientSocket的头文件和CPP文件加到工程中，肯定编译错误啦。
7.在stdafx.h中，我们加些必要的头文件和宏。
#include <afxsock.h>		// MFC socket extensions
#define MAX_BUFF	2048
#define MYTRACE		printf
8.还是编译错误，把暂时不用的g_frame宏的相关地方注释掉，以后你需要时自己定义，再把一些找不到头文件的地方Fix一下，直到编译通过。
9.相对而言，上面讲解虽然不可能面面俱到，但有些C/C++基础的应该还是可以自己解决的，这都解决不了的话以后的开发估计就不好做了。
10.找到工程的main函数，增加以下处理，这里要注意，AfxSocketInit()是必须的，并且只需执行一次。后面的就没啥可说了...
		if (!AfxSocketInit())
		{
		}else{
			CSocket* pSocket = new CServerSocket;
			pSocket->Create(6000);
			pSocket->Listen();
			MYTRACE("Server Listen ...");
			getchar();
		}
最后一句getchar()只是个防退出函数，如果使用单片机的while(1);，多牛的CPU都能顶到100%，所以大家移植时不要什么都没理解就啥都抄噢。		
11.以上就基本完成了监听数据功能，用不着那么复杂。如果你要处理这些数据，注意一下对g_frame宏的处理，大家可以了解一下这三个事件的时机，然后自行处理。
g_frame->OnSocketAccept((LPCVOID)nErrorCode);	//接收到新连接，发生在任务开始时
g_frame->OnSocketClose((LPCVOID)nErrorCode);	//连接主动断开，发生在任务结束时
g_frame->OnServerRecvData(buff);				//接收数据处理。
