今天测试结果:
已认可可以使用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;
};
明天会在此基础上做一个简单炸弹人网络功能的模型,
并模拟游戏输入数据.如果没有问题后天就可以移到炸弹人本体代码中去。