|
楼主 |
发表于 2010-6-22 14:08:05
|
显示全部楼层
Socket 篇:
如何一步步写个简单的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); //接收数据处理。
DemoSocket.rar
(19 KB, 下载次数: 120)
|
|