?? qqclient.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 + -