|
|

楼主 |
发表于 2006-3-24 08:48:48
|
显示全部楼层
客户端代码
/**
* 登陆
*/
public boolean login() {
if (user != null && !logging && user.getServerIp() != null) {
try {
if (clientSocket == null) {
logging = true;
clientSocket = new Socket(user.getServerIp(), user
.getServerPort());
if (clientSocket.isConnected()) {
in = new ObjectInputStream((clientSocket
.getInputStream()));
out = new ObjectOutputStream(clientSocket
.getOutputStream());
startInputListener();
// 向服务器发送一条登陆验证消息
Message message = new Message();
message.loginCheckMessage(user.getEmpNum(), user
.getEmpPsw());
out.writeObject(message);
out.flush();
message.clear();
resInputListener();
// 读取服务器的返回验证信息
startInputListener();
Object serverMsg = in.readObject();
resInputListener();
if (serverMsg instanceof Message) {
switch (((Message) serverMsg).msgType) {
case LOGIN_CHECK:
if (!((Message) serverMsg).logIn) {
String str = "用户"+((Message) serverMsg).name
+ ":" + ((Message) serverMsg).psw;
Shell info = new Shell(new Display());
info.setLocation(200,150);
MessageDialog.openError(info,"错误!",str);
user.setLoggedIn(false);
logout();
}else{
String str = "用户"+((Message) serverMsg).name
+ ":" + ((Message) serverMsg).psw;
System.out.println(str);
user.setLoggedIn(true);
logging = false;
}
break;
default:
break;
}
} else
System.out.println((Message) serverMsg);
}
}
} catch (UnknownHostException e) {
log.error("未知的服务器地址");
} catch (UnresolvedAddressException e) {
log.error("无法解析服务器地址");
} catch (IOException e) {
log.error("连接失败");
}catch(Exception e){
}
}
return user.isLoggedIn();
}
/**
* 发送普通消息方法
*/
public void sendSingleMessage(String empNum, String msg) {
Message message = new Message();
message.msgType = MessageType.COMMON;
}
public void startInputListener(){
listener = new InputListener();
listener.running = true;
if (!listener.isAlive())
listener.start();
}
public void resInputListener(){
listener.running = false;
listener.interrupt();// 这里,是应该断开还是wait呢?我都试了,好象效果一样
listener = null;
}
class InputListener extends Thread {
boolean running = false;
public void run() {
while (true) {
if (running) {
try {
Object serverMsg = in.readObject();
if (serverMsg instanceof Message) {
switch (((Message) serverMsg).msgType) {
default:
break;
}
} else
System.out.println((Message) serverMsg);
} catch (Exception e) {
}
}
}
}
}
/**
* 退出
*
* @param reason
* true 服务器断开连接 false 用户断开连接
*/
public void logout() {
try {
user.setLoggedIn(false);
logging = false;
out.close();
in.close();
clientSocket.close();
// System.exit(0);
} catch (Exception e) {
e.printStackTrace();
}
} |
|