📄 infroomhandler.java
字号:
/*
*InfRoomHandler.java:建立员工沟通实体类的控制类。
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import java.net.*;
public class InfRoomHandler extends MyHandler implements ActionListener {
public InfRoomView infEv;
private ObjectOutputStream outputS;
private ObjectInputStream inputS;
private ServerSocket toserver;
private Socket connection;
InfRoomThread irt;
public void actionPerformed( ActionEvent e) {
irt=new InfRoomThread();
if (e.getActionCommand() == "request") {
irt.start();
}
if (e.getActionCommand() == "send") {
String message=infEv.p1.requestView.getText();
irt.sendMsg(message);
}
if (e.getActionCommand() == "refuse") {
JFileChooser jfc=new JFileChooser();
int Val=jfc.showOpenDialog(infEv.p1);
if(Val==JFileChooser.APPROVE_OPTION){
infEv.p1.reponseView.setText("");
String name=jfc.getSelectedFile().getName();
try{
FileReader f=new FileReader(name);
BufferedReader b=new BufferedReader(f);
String s="", str="";
while((s=b.readLine()) != null){
str+=s;
}
infEv.p1.reponseView.append(str);
f.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
}
if (e.getActionCommand() == "exit") {
JFileChooser jfc=new JFileChooser();
int Val=jfc.showSaveDialog(infEv.p1);
if(Val==JFileChooser.APPROVE_OPTION){
try{
String name=jfc.getSelectedFile().getName();
String str=infEv.p1.reponseView.getText();
byte[] buf=str.getBytes();
ByteArrayOutputStream f=new ByteArrayOutputStream();
f.write(buf);
OutputStream f2=new FileOutputStream(name);
f.writeTo(f2);
f2.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
}
}
class InfRoomThread extends Thread {
public void run(){
try {
// 创建一个ServerSocket.
toserver = new ServerSocket(4000, 100);
while (true) {
// 等待连接
infEv.p1.reponseView.setText("等待连接...\n");
connection = toserver.accept();
infEv.p1.reponseView.append("客户端从 "
+ connection.getInetAddress().getHostName() + " 连接到服务器");
// 获取输入输出流
// 设置输出流
outputS = new ObjectOutputStream(connection.getOutputStream());
outputS.flush();
// 设置输入流
inputS = new ObjectInputStream(connection.getInputStream());
infEv.p1.reponseView.append("\n 获得输入/输出流\n");
// 处理连接
// 连接成功
String message = "服务器端>> 连接成功";
outputS.writeObject(message);
outputS.flush();
// 输入框
infEv.p1.requestView.setEnabled(true);
// 处理来自客户端的信息
do {
// 读取消息
try {
message = (String) inputS.readObject();
infEv.p1.reponseView.append("\n" + message);
infEv.p1.reponseView.setCaretPosition(infEv.p1.reponseView.getText().length());
} catch (Exception ex) {
// outFrame.append("\n 接收到未知类型对象");
}
} while (!message.equals("客户端>> 终止"));
// 关闭连接
infEv.p1.reponseView.append("\n 用户终止了连接");
infEv.p1.requestView.setEnabled(false);
outputS.close();
inputS.close();
connection.close();
toserver.close();
}
} catch (EOFException eofException) {
System.out.println("客户端终止了连接");
}
// 捕获异常
catch (IOException ioException) {
ioException.printStackTrace();
}
}
void sendMsg(String message)
{
try
{
outputS.writeObject("服务器端>> " + message);
outputS.flush();
infEv.p1.reponseView.append("\n服务器端>>" + message);
}
catch (Exception ioException)
{
infEv.p1.reponseView.append("\n 写入对象错误");
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -