DirectPlay分组功能 (转)[@more@]现在
网络游戏的网络功能很大一部份是居于WinSock/Socket之上的。但
microsoft的游戏开发包
DirectX SDK同样提供了网络的功能----DirectPlay.
当然,WinSock/Socket与DirectPlay相比较,都存在着优缺.
而这个"优"与"缺"不是一两句话可概括的(本文重点也不是讲它们的区别).
DirectPlay的优点:Microsoft的工程师们已把它的网络功能写好了,这样可以为您节省下不少的泡MM时间.如:网络初始化、网络通信的 函数功能、网络分组功能等等等("网络分组"是本文的中心)
DirectPlay的缺点:他的服务端只能运行在 windows平台上;只能支持较少数量的玩家(好现没有哪个公司或个人证明过,在MSDN论坛上我问过之类的问题,但MicroSoft说这主要是靠你写的 程序的类型和你的 服务器有关而且他们过去也在内部做过有10000名玩家的试验,我在Microsoft的帖子详见: ASP?ICP=msdn&sLCID=us&sgroupURL=microsoft.public. win32.programmer.directx .NETworking&sMessageID=%253CObG98IsTCHA.1640@tkm sftngp10%253E" target=_blank>http://communities.microsoft.com/newsgroups/previewFrame.asp?ICP=msdn&sLCID=us&sgroupURL=microsoft.public.win32.programmer.directx.networking&sMessageID=%253CObG98IsTCHA.1640@tkmsftngp10%253E )
萝卜青菜各有所爱,关于谁优谁劣就留给各位讨论吧。
好了,现在进入主题。
先给大家介绍DirectPlay中"组"的功能.
我们知道,在网络中要给某人发送消息,就要知道他的地址,也就是说要给一群人发送,就是要知道他们每个人的地址.这样,一个一个轮着发不会很麻烦吗?还好,DirectPlay引入了组的概念.只要你把这些人加入某组,以后给这个组发一条消息,他们每人就都会收到这个消息.怎么样?很爽是吧~~
爽是爽,但问题来了,DirectX SDK 8.1 与 DirectX SDK 7.0 有了相当大的改变,而这些改变SDK Help中又只是用几句话带过(有的甚至没有讲).比如有几个函数在8.1中就消失了,如:AddGroupToGroup()、RemoveGroupFromGroup()、CreateGrou pingroup()、Create player()等等等...
而我们要用这些函数时要怎么办?SDK`s Help中又没说清楚~~
且现有的函数最多只是给你这个函数的类型是什么、参数是什么、返回值是什么、而没有具体用法......
这所有的一切的一切将在本文章所附带的范例中一一给您展现,且例子中的代码有详细的中文注解.
注:
本例子在以下编译环境中通中通过:VC6.0、DirectX 8.1 SDK、 winxp
正文完
当然,WinSock/Socket与DirectPlay相比较,都存在着优缺.
而这个"优"与"缺"不是一两句话可概括的(本文重点也不是讲它们的区别).
DirectPlay的优点:Microsoft的工程师们已把它的网络功能写好了,这样可以为您节省下不少的泡MM时间.如:网络初始化、网络通信的 函数功能、网络分组功能等等等("网络分组"是本文的中心)
DirectPlay的缺点:他的服务端只能运行在 windows平台上;只能支持较少数量的玩家(好现没有哪个公司或个人证明过,在MSDN论坛上我问过之类的问题,但MicroSoft说这主要是靠你写的 程序的类型和你的 服务器有关而且他们过去也在内部做过有10000名玩家的试验,我在Microsoft的帖子详见: ASP?ICP=msdn&sLCID=us&sgroupURL=microsoft.public. win32.programmer.directx .NETworking&sMessageID=%253CObG98IsTCHA.1640@tkm sftngp10%253E" target=_blank>http://communities.microsoft.com/newsgroups/previewFrame.asp?ICP=msdn&sLCID=us&sgroupURL=microsoft.public.win32.programmer.directx.networking&sMessageID=%253CObG98IsTCHA.1640@tkmsftngp10%253E )
萝卜青菜各有所爱,关于谁优谁劣就留给各位讨论吧。
好了,现在进入主题。
先给大家介绍DirectPlay中"组"的功能.
我们知道,在网络中要给某人发送消息,就要知道他的地址,也就是说要给一群人发送,就是要知道他们每个人的地址.这样,一个一个轮着发不会很麻烦吗?还好,DirectPlay引入了组的概念.只要你把这些人加入某组,以后给这个组发一条消息,他们每人就都会收到这个消息.怎么样?很爽是吧~~
爽是爽,但问题来了,DirectX SDK 8.1 与 DirectX SDK 7.0 有了相当大的改变,而这些改变SDK Help中又只是用几句话带过(有的甚至没有讲).比如有几个函数在8.1中就消失了,如:AddGroupToGroup()、RemoveGroupFromGroup()、CreateGrou pingroup()、Create player()等等等...
而我们要用这些函数时要怎么办?SDK`s Help中又没说清楚~~
且现有的函数最多只是给你这个函数的类型是什么、参数是什么、返回值是什么、而没有具体用法......
这所有的一切的一切将在本文章所附带的范例中一一给您展现,且例子中的代码有详细的中文注解.
注:
本例子在以下编译环境中通中通过:VC6.0、DirectX 8.1 SDK、 winxp
正文完
附件:
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10748419/viewspace-1008976/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10748419/viewspace-1008976/