炸弹人开发日志2007_04_29

来源:互联网 发布:淘宝网免费推广 编辑:程序博客网 时间:2024/05/20 20:19

今天测试结果:

已认可可以使用CL_Socket来完成网络收发数据的功能。(基本上我还是倾向于能用ClanLib本身的功能来完成,因为这样就可以在linux下玩)

CL_Socket中的get_read_trigger之类,应该用的是socket的select方法吧.
因为在CL_EventTrigger_Socket中能够找到select的函数.

另外:
get_exception_trigger 不可用
sig_read_triggered    不可用
sig_disconnected      不可用
估计CL_Socket所有signals都不可用

因此使用CL_Socket用到的新功能有:
CL_EventListener      试过,可用
CL_Mutex       试过,可用
CL_Thread             试过,可用
CL_EventTrigger       试过,可用
CL_Socket::get_read_trigger 试过,可用

网络通信建立方式是:
1>一个线程用于accept
2>一个线程用于网络数据处理
3>数据接收发返回值如为0 或异常都认为socket断开.
4>数据正常断开使用shutdown( CL_Socket::shutdown_send )
5>由于CL_Socket本身没法判断自已是否有效,因此可能会用这样的结构处理
  struct
  {
     CL_Socket socket; //CL_Socket本身是以引用方式来实现的,所以拷贝代价很小,没必要使用指针。
     bool      enable;
  };
 


明天会在此基础上做一个简单炸弹人网络功能的模型,
并模拟游戏输入数据.如果没有问题后天就可以移到炸弹人本体代码中去。