我根据我的浅显的理解来说说:DPlay是为C/S游戏or多人会议而开发的,不适宜用来传输数据(效率低)!
他很多功能都是为方便C/S游戏or多人会议而设,用DPlay来通讯,首先要EnumConnections选定用什么方式连接,有TCP/IP,串行等等...
然后作为服务器端必须用CreateSessionData建立一个Session,表示你在等待连接,客户端用InitializeConnection连到某主机用GetDPEnumSessions获取那个主机上的所有Session,看看有没有自己的那个Session,有的话就DPlay.Open(SessionData, DPOPEN_JOIN)加入那个Session,然后还得设定自己的playername,用DPlay.CreatePlayer建立自己,这时服务器端才知道你已经加入了。
传输数据时也要用DPlay.CreateMessage来建立一个msg对象,然后用Msg.Write写入数据,再DPlay.Send,很麻烦!总之,你即使两方点对点通讯也要一方当服务器端建立Session,另一方当客户端连接。DPlay的TCP/IP连接一般不需要指定端口,因为有一个DPLAYSVR.EXE在一个默认端口(47624)来处理所有DPlay的TCP/IP连接。也可以自定连接端口,但很复杂!因为DPlay是一个高层API,它的通讯也是靠一些底层的API(比如TCP/IP的Windows Socket)来实现,所以不推荐你用它来做大量数据传输,直接用WinSock来做就可以了。