您的位置:首页 > 产品设计 > UI/UE

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 }
4. 修改ClientCommandHandler实现类EchoCommandHandler。如果用户发送"Hello",给他一个问候。如果他发送多次"Hello",告诉他已经发送了n次"Hello"。下面是修改后的代码:

[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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java 网络 职场