QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 677|回复: 3

网络模块的几个问题……

[复制链接]
发表于 2003-10-17 15:56:28 | 显示全部楼层 |阅读模式
1.鼠标消息如何获取?
2.消息如何封装?如何交互?
因为没有数据库,初步想通过文件进行数据间交互。
3.如果有数据库是否可以考虑网络模块仅与数据库通讯?
可以考虑,即任何操作均通过数据库来实现。对数据的处理也通过数据库。实际通过读写对应文件——这样就面临着一些问题:同步问题,也容易产生Bug。
暂时仅实现文件通讯,感觉很不安全,效率也不高,会有安全隐患……
问:有没有更好的交互方式?
发表于 2003-10-17 22:53:58 | 显示全部楼层
FT,你这些哪是网络模块的问题呀~~

鼠标消息是靠glut或SDL这些库来获取的,我目前只会用glut

关于消息的封装:
如果你指的是广义上的客户端与服务器间的消息通信,我觉得有两种方案:
1。使用字符串表示消息,好处是可扩展能力强,遇到“看不懂”的字符串就忽略这个消息;缺点是传送的数据量可能会太多,而且处理起来会比较慢且麻烦。
2。使用整数表示消息,好处是传输的数据量相对较小,而且可以方便地使用hash表来处理消息;缺点是可扩展能力差,而且消息库的版本不同时可能会引发一些安全性问题。
当然这两种方案是相通的,比如,使用数据库来管理消息库,这样可以方便地把整数消息转换成字符串消息(或相反的操作)。

如果你指的只是客户端内部的消息通信,我觉得可以使用成员函数的地址:
比如:
对象A要调用对象B的一个成员函数foo(),于是对象A所在的线程会调用一个函数,把foo()的函数地址(准确地说是相对的地址偏移量)加入到对象B的任务队列里,然后不等待函数的返回就继续执行其他操作;当对象B所在的线程处理到这个消息时,就会使用这个地址来调用B的foo()函数。当然,每个对象的任务队列必须有互斥功能。这样,当两个线程同时访问队列里的最后一个消息时不至于损坏这个消息。

你说的是什么消息?和数据库或文件有联系吗?

另外,我觉得数据库只是负责保存和读入游戏世界和一些配置等,和运行过程应该没有联系啊~~~
回复

使用道具 举报

 楼主| 发表于 2003-10-18 13:58:15 | 显示全部楼层
呵呵,要有全局观嘛~  
另外,我觉得数据库只是负责保存和读入游戏世界和一些配置等,和运行过程应该没有联系啊~~~

我的意思是,网络模块也要使用数据库呀,是否可以考虑通过数据库来通讯呢?
回复

使用道具 举报

发表于 2003-10-18 17:27:13 | 显示全部楼层
网络模块要用数据库吗?具体说说~~~

我觉得一旦游戏开始运行,基本就不需要数据库了~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-13 04:16 , Processed in 0.090076 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表