小弟本学期在做一个局域网游戏项目,形式类似于qq堂/泡泡堂,目前进展到winsock编程阶段,但是不知道采用何种形式可以实现局域网对战(阻塞or非阻塞?多线程?),,,希望得到高手详细的指点,,,谢谢!!!
解决方案 »
- 寻找个基于UDP的远程文件传输协议
- vc6.0连接SQL Server2005怎么老是连不是上啊,都罢工了三天了,救急啊!
- WIN32 SDK 不注册窗口类,程序怎样取得系统消息?
- SDK编程,注册表问题``请问怎样把当前键下的所有子键都列出来?
- 问几个超级基础的问题(C++基础)CTreeCtrl & m_TreeCtrl = GetTreeCtrl();
- 两天了,还是没有搞定,真的很急了,所以只能求助高手了。请问:在主对话框中如何调用子对话框中
- 这条SQL语句如何写?
- 单位里找不到C++的高手,请教各位大侠了!
- 如何实现软件的升级?
- J2EE是什么,CRM是什么?
- 关于CListView问题
- 无线网络接入?密匙设置?做过的人进来指点下
可以在局域网内用UDP广播 发现对手 然后互相协商建立tcp连接
开始游戏以后 每个对象(比如一个怪物啊、宝物啊、小兵啊)的运动、攻击等等动作传输给对手 对手那边根据这个动作来运算 比如是否碰撞了啊 是否哪个怪被打死了啊 然后重绘 多线程不多线程是否阻塞 看你的实现了 基本原则是界面线程不因传输网络数据而阻塞
回复:an_bachelor那么请问,在这类项目中是否需要信号池呢?信号池在这里起到什么作用呢?(本人菜鸟)
LRESULT C****::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_SOCKETMSG_PROTOCOL:
ExecProtocolData((char*)wParam,(int)lParam);
break;
case WM_SOCKETMSG_LOGIN:
break;
default:
break;
} return CDialog::DefWindowProc(message, wParam, lParam);
}你所说的信息池是指上面这种形式吗?
阻塞or非阻塞?多线程?是否要用信息池~这些都是按你自身想法怎样决定是否要用。如果是我想的话,我会用到阻塞,多线程和“信息池”这些技术来实现其中一些功能··
之所以用多线程,因为是多人游戏,还有互动
之所以用阻塞,有多线程的原因,也有游戏功能需要
之所以信息池,是不只是产生某一种单一的message
另外,你一定还会用到定时器