import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.*;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Client extends JPanel {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
//时间格式的规范。
private static String frameTitle = "Meeting Client";
private static JFrame frame;
public static void main(String[] args) throws IOException {
frame = new JFrame(frameTitle);
frame.setContentPane(new Client());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(400, 80,360,700);
frame.setBackground(Color.blue);
frame.setVisible(true);
}
private IService service = null;
private TextField serverName, serverPort, userName, password;
private Button connect, disconnect;
private TextField MeetingTitle, MeetingLabel, otherUserName,
MeetingStartTime, MeetingEndTime, MeetingID;
private TextField startTime, endTime;
private Button register, add, query, delete, clear, login;
private TextArea fromserver;
private boolean connected = false;
public TextArea getFromserver() {
return fromserver;
}
// 无参构造方法
public Client() {
// 设置安全管理
// System.setSecurityManager(new RMISecurityManager());
setStatus();
// 服务器地址
add(new Label("SERVER:"));
serverName = new TextField(20);
add(serverName);
serverName.setText("localhost");//默认情况下的服务器地址。
connect = new Button("CONNECT");
// 注册监听器
connect.addActionListener(new Connect());
add(connect);
add(new Label("PORT:"));
serverPort = new TextField(20);
add(serverPort);
serverPort.setText("1099");//默认情况下的端口号。
disconnect = new Button("DISCONNECT");
// 撤销注册监听器
disconnect.addActionListener(new Disconnect());
add(disconnect);
// 显示信息
fromserver = new TextArea(10, 40);
add(fromserver);
fromserver.setSize(100, 200);
fromserver.setEditable(false);
// 用户注册
//add(new Label("Display:"));
add(new Label("User_ID:"));
userName = new TextField(30);
add(userName);
userName.setText("");
add(new Label("PASSWORD:"));
password = new TextField(30);
add(password);
password.setText("");
register = new Button("User_Register");
register.addActionListener(new Register());
add(register);
login = new Button("User_Logn");
login.addActionListener(new Login());
add(login);
// 增加会议
add(new Label("=====Input the new meeting's information====="));
add(new Label("Meeting_Name:"));
MeetingTitle = new TextField(30);
add(MeetingTitle);
MeetingTitle.setText("");
add(new Label("Meeting_Label:"));
MeetingLabel = new TextField(30);
add(MeetingLabel);
MeetingLabel.setText("");
add(new Label("OtherUserName:"));
otherUserName = new TextField(30);
add(otherUserName);
otherUserName.setText("");
add(new Label("Begin_Time:"));
MeetingStartTime = new TextField(30);
add(MeetingStartTime);
MeetingStartTime.setText("");
add(new Label("End_Time:"));
MeetingEndTime = new TextField(30);
add(MeetingEndTime);
MeetingEndTime.setText("");
add = new Button("ADD");
add.addActionListener(new Add());
add(add);
// 清除会议
clear = new Button("DELETE");
clear.addActionListener(new Clear());
add(clear);
// 查询会议
add(new Label("Query by the meeting's time(Begin_Time——End_Time):"));
startTime = new TextField(10);
add(startTime);
add(new Label("——"));
endTime = new TextField(10);
add(endTime);
query = new Button("Query");
// 注册监听器
query.addActionListener(new Query());
add(query);
// 删除会议
add(new Label("Input the deleted meeting 's ID:"));
MeetingID = new TextField(10);
add(MeetingID);
delete = new Button("DELETE");
delete.addActionListener(new Delete());
add(delete);
// 初始化
init();
setVisible(true);
}
private void setStatus() {
if (connected)
frame.setTitle(frameTitle + ":Connected");
else
frame.setTitle(frameTitle + ":Not Connected");
}
private void init() {
serverName.setEnabled(true);
serverPort.setEnabled(true);
userName.setText("");
userName.setEnabled(false);
password.setText("");
password.setEnabled(false);
MeetingTitle.setText("");
MeetingTitle.setEnabled(false);
MeetingLabel.setText("");
MeetingLabel.setEnabled(false);
otherUserName.setText("");
otherUserName.setEnabled(false);
MeetingStartTime.setText("");
MeetingStartTime.setEnabled(false);
MeetingEndTime.setText("");
MeetingEndTime.setEnabled(false);
startTime.setText("");
startTime.setEnabled(false);
endTime.setText("");
endTime.setEnabled(false);
MeetingID.setText("");
MeetingID.setEnabled(false);
connect.setEnabled(true);
disconnect.setEnabled(false);
register.setEnabled(false);
login.setEnabled(false);
add.setEnabled(false);
query.setEnabled(false);
delete.setEnabled(false);
clear.setEnabled(false);
}
private void afterRegister() {
//注册完成后 所有的textbox都可以填写内容了
userName.setEnabled(false);
password.setEnabled(false);
MeetingTitle.setEnabled(true);
MeetingLabel.setEnabled(true);
otherUserName.setEnabled(true);
MeetingStartTime.setEnabled(true);
MeetingEndTime.setEnabled(true);
startTime.setEnabled(true);
endTime.setEnabled(true);
MeetingID.setEnabled(true);
register.setEnabled(false);
login.setEnabled(false);
add.setEnabled(true);
query.setEnabled(true);
delete.setEnabled(true);
clear.setEnabled(true);
}
class Connect implements ActionListener {
public void actionPerformed(ActionEvent event) {
try {
// 连接到服务器
service = (IService) Naming.lookup("rmi://"
+ serverName.getText() + ":" + serverPort.getText()
+ "/IService");
connected = true;
userName.setEnabled(true);
password.setEnabled(true);
register.setEnabled(true);
login.setEnabled(true);
disconnect.setEnabled(true);
serverName.setEnabled(false);
serverPort.setEnabled(false);
connect.setEnabled(false);
setStatus();
fromserver.append("连接服务器成功,请注册!\n");
} catch (Exception e) {
fromserver.append("连接服务器失败,请重新连接!\n");
connected = false;
setStatus();
service = null;
System.out.println(e);
}
}
}
class Disconnect implements ActionListener {
public void actionPerformed(ActionEvent event) {
try {
if (service == null)
return;
service = null;
} catch (Exception e) {
fromserver.append("断开连接失败,请重试!\n");
} finally {
connected = false;
fromserver.append("用户" + userName.getText() + "断开服务器连接!\n");
init();
setStatus();
}
}
}
class Register implements ActionListener {
public void actionPerformed(ActionEvent event) {
try {
if (service.register(userName.getText(), password.getText())) {
afterRegister();
fromserver.append("注册成功\n");
} else {
fromserver.append("注册失败——你所使用的用户名已经存在!\n");
}
} catch (Exception e) {
fromserver.append("注册失败\n");
}
}
}
class Login implements ActionListener {
public void actionPerformed(ActionEvent event) {
try {
if (service.login(userName.getText(), password.getText())) {
afterRegister();
fromserver.append("登录成功\n");
} else {
fromserver.append("登录失败——你输入的用户名或密码错误!\n");
}
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
class Add implements ActionListener {
public void actionPerformed(ActionEvent event)
没有合适的资源?快使用搜索试试~ 我知道了~
编写简单的RMI程序 多线程web 服务器
共38个文件
class:19个
java:9个
classpath:2个
4星 · 超过85%的资源 需积分: 9 34 下载量 186 浏览量
2010-11-03
12:09:07
上传
评论 1
收藏 112KB RAR 举报
温馨提示
编写简单的HTTP 1.0客户端/服务器程序:.编写多线程Web服务器:编写简单的RMI程序 实验
资源推荐
资源详情
资源评论
收起资源包目录
RMI.rar (38个子文件)
ex4_5
bin
WebServer.class 3KB
WebClient$WebClientHandleThread.class 6KB
HttpConstants.class 1KB
WebClient.class 3KB
WebServer$Client.class 7KB
1.jpg 4KB
Hello.html 496B
.settings
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.wst.jsdt.ui.superType.container 49B
.jsdtscope 454B
src
WebClient.java 5KB
WebServer.java 10KB
HttpConstants.java 2KB
.project 569B
.classpath 232B
Sunset.gif 70KB
ex6
bin
Client$Delete.class 2KB
Client$Disconnect.class 2KB
User.class 777B
Client$Add.class 3KB
Client$Query.class 2KB
Client$Login.class 1KB
Meeting.class 2KB
Client$Clear.class 1KB
Client$Connect.class 2KB
Service.class 5KB
Server.class 1KB
IService.class 613B
Client$Register.class 1KB
Client.class 7KB
src
User.java 478B
Server.java 586B
Meeting.java 2KB
Client.java 10KB
IService.java 711B
Service.java 5KB
.project 379B
.classpath 232B
共 38 条
- 1
资源评论
- sqrllll2013-06-19不错……帮我通过了验收
- 伞下就是晴天2013-05-26简单而且 实用
ldl725
- 粉丝: 5
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功