QuickServer开发指南(5)- 客户数据
2008-09-03 16:07
549 查看
QuickServer开发指南(5)- 客户数据
既然不能在ClientCommandHandler和ServerAuthenticator类中保存客户数据,我们使用ClientData类的handleCommand()或askAuthorisation()方法来存储所有的客户端信息。示范一下这个特点有什么用。还是以EchoServer为例,当用户发送"Hello"时,我们给他一个问候。如果用户再发送"Hello",我们提醒他
已经发了n次"Hello"。接下来定义ClientData类来存储用户名以及他向服务器发送"Hello"的次数。
1. 代码
1. 在EchoServer中创建一个EchoServerData类
[align=left]02 04 [b]05 [b]06 [/align] [align=left]EchoServerData [b]08 [b]09 [b]10[/align] [align=left]setHelloCount([b]12 }[/align] [align=left]getHelloCount() {[/align] [align=left]helloCount;[/align] [align=left]17[/align] [align=left]setUsername(String username) {[/align] [align=left].username = username;[/align] [align=left]21 [b]22 [b]23 }[/align] [align=left]01 [b]02[/align] [align=left]org.quickserver.net.*;[/align] [align=left]org.quickserver.net.server.*;[/align] [align=left]import 08 09 [b]10[/align] [align=left][b]"echoserver.EchoCommandHandler"String auth = 13 ;[/align] [align=left]QuickServer myServer = [/b]16 myServer.setClientData(data);[/align] [align=left]myServer.setPort(20 );[/align] [align=left]{[/align] [align=left]23 (AppException e){ [/align] [align=left]"Error in server : "}[/align] [align=left]27 package [/b]03 04 [b]05[/align] [align=left]EchoServerQuickAuthenticator [b]07[/align] [align=left]askAuthorisation(ClientHandler clientHandler)[/align] [align=left]IOException {[/align] [align=left]"User Name :"if)) {[/align] [align=left]"Logged out."//close the connection[/align] [align=left]15 16 18 );[/align] [align=left]if|| password ==21 [b]22[/align] [align=left](username.equals(password)) {[/align] [align=left]"Auth OK"//store the username in ClientData[/align] [align=left]27 return true} 30 );[/align] [align=left];[/align] [align=left]33 } |
[align=left]02 [b]03[/align] [align=left]java.net.*;[/align] [align=left]java.io.*;[/align] [align=left]org.quickserver.net.server.ClientCommandHandler;[/align] [align=left]org.quickserver.net.server.ClientHandler;[/align] [align=left]public class ClientCommandHandler {[/align] [align=left]public void [/b]throws [/b]handler.sendClientMsg(14 );[/align] [align=left]"| Note: Password = Username |"handler.sendClientMsg([/b]17 );[/align] [align=left]19 [b]20 [b]21 +[/align] [align=left]23 public void throws [/b]handler.sendSystemMsg(27 }[/align] [align=left]public void [/b]throws [/b]if[/b])) {[/align] [align=left]"Bye ;-)"handler.closeConnection();[/align] [align=left]if[/b])) {[/align] [align=left]37 );[/align] [align=left](data.getHelloCount()==39 +data.getUsername());[/align] [align=left]else {[/align] [align=left]"Echo : "}[/align] [align=left]48 //---- EchoServerPoolableData.java ----[/align] [align=left]echoserver;[/align] [align=left]import import [/b]07 08 [b]09 [b]10[/align] [align=left]activateObject(Object obj) {[/align] [align=left]13 [b]14 [b]null;[/align] [align=left]16 ;[/align] [align=left]18 19 [b]20 public void EchoServerPoolableData pd = (EchoServerPoolableData)obj;[/align] [align=left]0pd.setUsername(25 public boolean if[/b])[/align] [align=left];[/align] [align=left]30 [b]31 }[/align] 相关文章推荐
|