myclientreader.java

来自「QQ聊天」· Java 代码 · 共 77 行

JAVA
77
字号
package com.sato.client.chat;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Date;

import javax.swing.DefaultListModel;
import javax.swing.JOptionPane;

import com.sato.pub.PackType;
import com.sato.pub.QQpack;
import com.sato.pub.User;


public class MyClientReader extends Thread{
	private QQpack pack;
	private Socket socket;
	private ChatFace chatface;
	private ObjectInputStream ois;
	private ObjectOutputStream oos;
	public MyClientReader(Socket socket,ObjectInputStream ois,ObjectOutputStream oos,ChatFace chatface){
		this.socket=socket;
		this.chatface=chatface;
		this.ois=ois;
		this.oos=oos;
	}
	public void run(){
		while(true){
			try {
				System.out.println("aaaaa;:"+Thread.currentThread());
				
				pack=(QQpack) ois.readObject();
				FileWriter fw=new FileWriter("./chatRecord/"+chatface.getId()+".txt",true);
				BufferedWriter bw=new BufferedWriter(fw);
				if(pack.getType().equals(PackType.online_list)){
					chatface.getOnlineList().setModel((DefaultListModel)pack.getContent());
				}
				if(pack.getType().equals(PackType.group_chat)){
					String str=pack.getFrom().getSname()+" "+pack.getFrom().getSid()+new Date()+"\n"+pack.getContent().toString()+"\n";
					chatface.getShowArea().append(str);
					bw.write(str);
					bw.flush();
					
				}
				if(pack.getType().equals(PackType.Private_Chat)){
					String str=pack.getFrom().getSname()+" "+pack.getFrom().getSid()+new Date()+"\n"+pack.getContent().toString()+"\n";
					chatface.getShowArea().append(str);			
					bw.write(str);
					bw.flush();
				}
				if(pack.getType().equals(PackType.bulletin)){
					chatface.getBoardArea().append("服务端:"+"\n"+pack.getContent().toString()+"\n");
				}
				if(pack.getType().equals(PackType.force_offline)){
					chatface.getShowArea().append("用户被强制下线"+new Date()+"\n");
				}
				if(pack.getType().equals(PackType.server_stop)){
					chatface.getShowArea().append("服务器停止"+new Date()+"\n");
				}
				if(pack.getType().equals(PackType.chang_succeed)){
					JOptionPane.showConfirmDialog(null, "修改成功", "提示",JOptionPane.DEFAULT_OPTION);
				}
				if(pack.getType().equals(PackType.chang_fail)){
					JOptionPane.showConfirmDialog(null, "旧密码不正确", "提示",JOptionPane.DEFAULT_OPTION);
				}
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				break;
			} 
		}
	}
}

⌨️ 快捷键说明

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