⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 infroomhandler.java

📁 java课程的资料以及实验的代码
💻 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 + -