QuickServer在应用逻辑上为开发者提供了四个类
o ClientCommandHandler
处理与客户端的交互——使用字符串命令
o ClientObjectHandler [可选类]
处理与客户端的交互——使用对象命令
o Authenticator [可选类]
客户端验证
o ClientData [可选类]
客户端数据载体(支持类)
说明:
1 其中 ClientCommandHandler是必须的,不能少的。一起服务都是ClientCommandHandler开始的。
2 ClientObjectHandler 只是用来处理 接收 client 发送来的object 不是用来向 client发送object的。
3 当需要发送的object时,可在ClientCommandHandler中使用
handler.setDataMode(DataMode.OBJECT, DataType.OUT);
发送完后不要忘记使用
handler.setDataMode(DataMode.STRING, DataType.IN); handler.setDataMode(DataMode.STRING, DataType.OUT);
使得server回到command状态,这里需要注意,虽然开始的时候只用了
handler.setDataMode(DataMode.OBJECT, DataType.OUT);
似乎回到command状态时也只要
handler.setDataMode(DataMode.STRING, DataType.OUT);
但是这样的话 Server会认为系统只是有DataType.IN功能了,所以也要加上
handler.setDataMode(DataMode.STRING, DataType.IN);
handler.setDataMode(DataMode.STRING, DataType.IN); handler.setDataMode(DataMode.STRING, DataType.OUT);
是并列存在的不会,因为先后而覆盖
4 若想让Sever接受Object只需在ClientCommandHandler中使用
handler.setDataMode(DataMode.OBJECT, DataType.IN);
此时Server此线程会发生堵塞,直到接受到Client发送的Object,然后自动转向实现了ClientObjectHandler接口的类中的handleObject(ClientHandler handler, Object command)函数中处理Object。在处理完成后,勿忘
handler.setDataMode(DataMode.STRING, DataType.IN); handler.setDataMode(DataMode.STRING, DataType.OUT);