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

📄 client.java

📁 简单功能的聊天室。用object流实现的。只能公聊。上线人命列表
💻 JAVA
字号:
package client;

import java.net.*;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.List;
import java.awt.event.*;
import javax.swing.*;

import vo.serverObjectVO;

public class client implements java.io.Serializable {

	/**
	 * @param argsjava.io.Serializable
	 */
	// 创建界面
	JFrame f1; // 父容器

	Panel p1; // 放置最上边的panel

	Panel p2; // 放置最下边的panel

	JTextField JtUser; // 用户登陆

	Button BtLogin; // 用户登陆按钮

	TextArea TaCharNote; // 显示聊天内容

	TextArea LsUserNameList; // 显示用户

	JTextField JtSendCharNote; // 发送聊天内容

	Vector vc = new Vector();

	Button BtSend; // 发送按钮
	
	Button BtSave; //保存按钮
	FileDialog  file;  //文件对话框

	client() {
		createGui();
		connectionServer();

	}

	private void createGui() {

		f1 = new JFrame("聊天室");
		
		p1 = new Panel();
		p2 = new Panel();

		JtUser = new JTextField(10);
		BtLogin = new Button("登陆");
		BtLogin.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				// TODO Auto-generated Event stub
				// actionPerformed()
				JtUser.setEditable(false);
				BtLogin.setEnabled(false);

				p2.setEnabled(true);

				LoginUser(JtUser.getText());

			}
		});
		TaCharNote = new TextArea();
		LsUserNameList = new TextArea(20,20);
		JtSendCharNote = new JTextField(30);
		
		BtSend = new Button("发送");
		BtSend.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				// System.out.println("登陆"); // TODO Auto-generated Event stub
				sendChat();
				// actionPerformed()
			}
		});
		BtSave = new Button("保存");
		BtSave.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				file = new FileDialog(f1,"new");
				file.setMode(1);
				file.setVisible(true);
				String path=file.getDirectory();
				String Strfile=file.getFile();
				System.out.println(path+Strfile);
				String Files=path+Strfile;
				try{
					File ff = new File(Files);
					
					
					//JtSendCharNote.selectAll();
					TaCharNote.setEditable(true);
					String s=TaCharNote.getText();
					
					
					TaCharNote.setEditable(false);
					PrintStream  rf= new PrintStream (new FileOutputStream(ff,true));
					rf.print(s);
					rf.flush();
					rf.close();

					
					
				
				}catch(Exception ex){
					System.out.println("Save"+ex.toString());
					
				}
				
			}
		});

		p1.add(JtUser);

		p1.add(BtLogin);

		p1.setLayout(new FlowLayout());
		p2.add(JtSendCharNote);
		p2.add(BtSend);
		p2.add(BtSave);

		f1.setLayout(new BorderLayout());
		f1.add("North", p1);
		f1.add("East", LsUserNameList);
		LsUserNameList.setEditable(false);
		f1.add("Center", TaCharNote);
		TaCharNote.setEditable(false);
		f1.add("South", p2);
		p2.setEnabled(false);

		f1.setSize(new Dimension(500, 500));
		f1.setVisible(true);

	}

	Socket soc = null;

	ObjectOutputStream out; // 与服务器通信的对象流

	ObjectInputStream in;// 与服务器通信的对象流

	// 连接服务器
	private boolean connectionServer() {
		try {

			soc = new Socket("127.0.0.1", 8153);
			out = new ObjectOutputStream(new BufferedOutputStream(soc
					.getOutputStream()));
			in = new ObjectInputStream(new BufferedInputStream(soc
					.getInputStream()));

			LessServer ls = new LessServer();
		
			ls.start();

		} catch (Exception e) {
			System.out.println("connectionServer"+e.toString());
		}
		return true;
	}

	// 接受处理信息
/*	private void acceptInfo() {
		try {

			serverObjectVO voServer = new serverObjectVO();

			while (true) {
				// System.out.println("okok");
				if ((voServer = (serverObjectVO) in.readObject()) != null) {

					if (voServer.getMake().equals("login")) {
						if (voServer.getUserName() != null) {
							Vector userList = new Vector();
							userList = voServer.getUserName();

							listUser(userList);
							System.out.println("客户端1");
						}
					}
				}
			}

			// while((vc=(Vector) in.readObject())!=null){
			// System.out.println(vc.size());

			// }

		} catch (Exception e) {
			System.out.println(e.toString());
		}

	}
*/
	// 用户登陆
	private boolean LoginUser(String name) {
		try {
			if (name != null) {

				vo.clientObjectVO vo = new vo.clientObjectVO();
				vo.setMake("login");
				vo.setUserName(name);

				out.writeObject(vo);

				// out.close();
				out.flush();

			}
		} catch (Exception e) {
			System.out.println(e.toString());
		}
		return true;

	}

	// 列出所有登陆的用户
	private void listUser(String listUser) {
		
		LsUserNameList.setText(listUser);
		
	}

	// 发送信息
	private void sendChat() {
		try {
			vo.clientObjectVO co = new vo.clientObjectVO();
			co.setMake("chat");
			co.setChatNote(JtSendCharNote.getText());

			out.writeObject(co);
			out.flush();

		} catch (Exception e) {
			System.out.println("sendChat :" + e.toString());

		}
	}

	// 更新聊天内容
	private String acceptChat(String chatNote) {
		TaCharNote.append(chatNote + "\r\n");

		return chatNote;
	}

	// 保存聊天记录
	private boolean saveChat() {
		return true;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new client();
		

	}

	private class LessServer extends Thread {
		public void run() {
			String str1=JtUser.getText();
			System.out.println(str1);
			vo.serverObjectVO svo = new vo.serverObjectVO();
			try {
				while ((svo = (vo.serverObjectVO) in.readObject()) != null) {
					if (svo.getMake().equals("chat")) {

						String str = svo.getClienName() + "说:"
								+ svo.getChatNote();
						acceptChat(str);
					} else {
						if (svo.getMake().equals("login")) {
							String str = "客户:" + svo.getClienName() + "登陆";
							acceptChat(str);
							listUser(svo.getTeststr());
						
							
						}
						
					}

				}

			} catch (Exception e) {
				System.out.println("LessServer:" + e.toString());

			}
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -