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

📄 qqclient.java

📁 我写的聊天程序 用JAVA实现
💻 JAVA
字号:
package NewQQ;import java.awt.*;import java.awt.event.*;import java.io.*;import java.net.*;import javax.swing.*;import java.util.*;public class QQClient {	static String name;	static String ipaddress;	static HashMap friends = new HashMap();	static String filetransport = "";	static String savefile;	public static void main(String[] args) throws Exception{		//1.获取用户名和服务器地址		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));		System.out.println("请输入姓名:");		name = br.readLine();		System.out.println("请输入服务器地址:");		ipaddress = br.readLine();		//2.判断用户名是否合法		if(name.equals("所有人")){			System.out.println("系统保留字不可使用,请重新登录服务器!");			return;		}		Socket clientsocket = new Socket(ipaddress,14789);		ObjectOutputStream sendmsg = new ObjectOutputStream(clientsocket.getOutputStream());		ObjectInputStream recvmsg = new ObjectInputStream(clientsocket.getInputStream());		QQMessage sendmessage = new QQMessage();		//3.判断用户名是否已经被占用		sendmessage.setSender(name);		sendmsg.writeObject(sendmessage);		sendmsg.flush();		QQMessage recvmessage = (QQMessage) recvmsg.readObject();			//3.1被占用			if(recvmessage.getMessage().equals("false")){				System.out.println("用户名已存在,请更换后重新登录");				return;			}			//3.2可以使用			else{				//3.2.1创建聊天主窗口				QQChatFrame frame = new QQChatFrame(name, sendmsg,friends,clientsocket);				frame.creat();								//3.21.循环读取信息				while(true){					QQMessage nmsg = (QQMessage)recvmsg.readObject();					int type = nmsg.getType();					if(type == 1){						frame.jcb.addItem(nmsg.getSender());						frame.jta.append(nmsg.getSender()+"  上线了!\n");					}					else if(type == 2){						frame.jcb.addItem(nmsg.getSender());					}					else if(type == 3){						frame.jta.append(nmsg.getSender()+"  对大家说:"+nmsg.getMessage()+"\n");					}					else if(type ==7){						try {							frame.jta.append(nmsg.getSender()+"  下线了!\n");							frame.jcb.removeItem(nmsg.getSender());							SingleFrame sf;							sf = (SingleFrame)friends.get(nmsg.getSender());							if(sf !=null){								sf.jframe.dispose();								friends.remove(nmsg.getSender());							}						} catch (RuntimeException e) {}					}					else if(type==12){						filetransport = nmsg.getFilename();					}					else if(type==13){						savefile = nmsg.getFilename();					}					else if(type==11){						if(filetransport!=null){							SingleFrame sf = (SingleFrame)friends.get(nmsg.getSender());							if(sf == null){								sf = new SingleFrame(nmsg.getSender(),sendmsg,friends,name);								sf.init();								friends.put(nmsg.getSender(),sf);							}							sf.jtextarea.append("对方不同意接收文件\n");							filetransport = null;						}					}					else{						SingleFrame sf = (SingleFrame)friends.get(nmsg.getSender());						if(sf == null){							sf = new SingleFrame(nmsg.getSender(),sendmsg,friends,name);							sf.init();							friends.put(nmsg.getSender(),sf);						}						if(type == 4){							sf.jtextarea.append(nmsg.getSender()+"  对我说:\n");							sf.jtextarea.append(nmsg.getMessage()+"\n\n");						}						else if(type ==5){							sf.jtextarea.append(nmsg.getSender()+" 发送文件: "+nmsg.getFilename()+"\n");							sf.jtextarea.append("接受或者取消"+"\n");							sf.jbuttonrecv.setEnabled(true);							sf.jbuttonrefuse.setEnabled(true);						}						else if(type==8){							FileOutputStream fos = new FileOutputStream(savefile,true);							fos.write(nmsg.getData(),0,nmsg.getLen());							fos.close();						}						else if(type==9){							sf.jtextarea.append("接受文件完毕,保存为"+savefile+"\n\n");							savefile = "";						}						else if(type==10){							sf.jtextarea.append("对方同意接收文件\n文件发送中......\n");							FileTransportThread ftt = new FileTransportThread(filetransport,sf,sendmsg);							ftt.start();						}					}				}			}	}}

⌨️ 快捷键说明

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