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

📄 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 + -