24小时热门版块排行榜    

查看: 541  |  回复: 0

salaries

新虫 (初入文坛)

[交流] 聊天

package cn.javaqq;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

public class ServerFrame {
        private final static int PORT = 8888;
        private static boolean bconnected = false;

        private static ServerSocket socket = null;
        private static DataOutputStream output = null;
    static List<ClientThread> cl=new ArrayList<ClientThread>();
        public static void main(String[] args) {

                new ServerFrame().startServer();
        }

        public  void startServer() {
                ClientThread ct=null;
                try {
                        socket = new ServerSocket(PORT);
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                while (true) {
                        Socket so = null;
                        try {
                                so = socket.accept();
                                ct = new ClientThread(so);
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                       
                        cl.add(ct);
                        Thread th=new Thread(ct);
                        th.start();

                }

        }
        class ClientThread implements Runnable {
                private DataInputStream input = null;
                private DataOutputStream output=null;

                private Socket s = null;
                private boolean bconnected = false;
            
               
                public void send(String str1){
                        try {
                                output.writeUTF(str1);
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
                @Override
                public void run() {
                        // TODO Auto-generated method stub
                        bconnected = true;
                       
                       
                        while (bconnected) {
                                String str = null;
                                // 读
                                try {
                                        str = input.readUTF();
                                        for(int i=0;i<cl.size();i++){
                                                cl.get(i).send(str);
                                        }
                                } catch (Exception e) {
                                        // TODO Auto-generated catch block
                                        // e.printStackTrace();
                                        try {
                                                s.close();
                                        } catch (IOException e1) {
                                                // TODO Auto-generated catch block
                                                e1.printStackTrace();
                                        }
                                        try {
                                                input.close();
                                        } catch (IOException e1) {
                                                // TODO Auto-generated catch block
                                                e1.printStackTrace();
                                        }
                                        // System.out.println("出现错误!";
                                }
                                System.out.println(str);
                                // 写
                                // output.writeUTF(s1);
                                // output.flush();
                        }
                }

                public ClientThread(Socket soc) {
                        s = soc;
                        // 读从客户端发过来的数据流
                        try {
                                input = new DataInputStream(s.getInputStream());
                                output=new DataOutputStream(s.getOutputStream());
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
        }

}
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
package cn.javaqq;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientFrame extends Frame {

        boolean clientread = false;
        static Socket client = null;
        // static TextArea area=null;
        static DataOutputStream output = null;
        TextField text = new TextField();
        Panel p = new Panel();

        TextArea area = new TextArea();
        TextArea area1 = new TextArea();
        Button btn1 = new Button("Connect";
        Button btn2 = new Button("Disconnect";

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

        }

        public void frameDemo() {
                BorderLayout border = new BorderLayout();
                BorderLayout border1 = new BorderLayout();
                p.setLayout(border1);
                p.add(area, border.NORTH);
                p.add(area1, border.SOUTH);
                setLayout(border);
                this.add(p, border.NORTH);
                // add(area, border.NORTH);
                add(text, border.SOUTH);
                add(btn1, border.WEST);
                add(btn2, border.EAST);

                this.setLocation(300, 200);
                this.setSize(300, 400);
                pack();
                text.addActionListener(new TFListener());
                btn1.addActionListener(new BTListener());
                btn2.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                try {
                                        ClientFrame.disConnected();
                                } catch (Exception e1) {
                                        // TODO Auto-generated catch block
                                        e1.printStackTrace();
                                }
                        }
                });
                this.setVisible(true);
                this.addWindowListener(new WindowAdapter() {
                        public void windowClosing(WindowEvent e) {
                                System.exit(0);
                        }
                });

        }

        public void connected() {
                try {

                        // ServerFrame.startServer();
                        client = new Socket("LocalHost", 8888);
                        System.out.println("connected!";

                        // clientread=true;

                } catch (UnknownHostException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }

        public static void disConnected() throws Exception {
                // ServerFrame.disConnectedServer();
                output.close();
                client.close();
        }

        private class TFListener implements ActionListener {

                @Override
                public void actionPerformed(ActionEvent e) {
                        // TODO Auto-generated method stub
                        String s = text.getText();
                        try {

                                output = new DataOutputStream(client.getOutputStream());
                                output.writeUTF(s);
                                output.flush();

                                try {
                                        ServerThread serverthread = new ServerThread(client);
                                        new Thread(serverthread).start();
                                } catch (Exception e1) {
                                        // TODO Auto-generated catch block
                                        e1.printStackTrace();
                                }

                                // output.close();
                        } catch (IOException e1) {
                                // TODO Auto-generated catch block
                                e1.printStackTrace();
                        } catch (NullPointerException e2) {
                                System.out.println("您还没有连接!";
                        }
                        area.setText(s);
                        text.setText("";
                }

        }

        private class BTListener implements ActionListener {

                @Override
                public void actionPerformed(ActionEvent e) {
                        // TODO Auto-generated method stub
                        new ClientFrame().connected();
                }

        }

        class ServerThread implements Runnable {
                Socket serversocket;
                DataInputStream clientinput = null;
                boolean start = false;
                String clientstring = null;

                @Override
                public void run() {
                        // TODO Auto-generated method stub
                        start = true;
                        while (start) {
                                try {
                                        clientinput = new DataInputStream(client.getInputStream());
                                } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                                try {
                                        clientstring = clientinput.readUTF();
                                } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                                area1.setText("收到服务器端发来数据:" + clientstring);

                        }
                }

                public ServerThread(Socket s) throws Exception {
                        serversocket = s;
                        clientinput = new DataInputStream(serversocket.getInputStream());
                }
        }
}
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 salaries 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 今天放榜吗? +12 布布和一二 2026-08-19 12/600 2026-08-19 13:45 by gloomy6159
[基金申请] filecode,4个jtjc了 +8 ziyangfang 2026-08-19 9/450 2026-08-19 13:08 by blacksandy
[基金申请] 今天基金会出结果吗?20260819 +8 kkkl_v 2026-08-19 8/400 2026-08-19 12:34 by Vivilian
[基金申请] 欢迎发来filecode的Mz6后的代码验证其规律 +52 医学老男孩 2026-08-13 115/5750 2026-08-19 12:09 by 医学老男孩
[基金申请] 2027广东省杰青 +4 奶牛小黑 2026-08-15 10/500 2026-08-19 11:02 by wanfengnew
[基金申请] 朋友圈看到的 +6 wangzilk 2026-08-18 8/400 2026-08-19 10:55 by Haru815
[基金申请] 时间戳变了,能看出什么问题? +10 基诺咪客 2026-08-17 14/700 2026-08-19 10:34 by 基诺咪客
[基金申请] 咱们一起用铁证分析2026国家社科基金中标与否 +8 启萌科技 2026-08-12 30/1500 2026-08-19 10:22 by 启萌科技
[基金申请] 什么时候开奖? +6 CrisMessi 2026-08-18 6/300 2026-08-19 08:06 by Equinoxhua
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +4 Tide man 2026-08-12 5/250 2026-08-19 07:41 by 201120518022
[基金申请] 重要消息,中午系统在维护 +10 yuleib84 2026-08-18 11/550 2026-08-19 07:30 by 羽毛枫f
[教师之家] 为什么余额宝的年化利率越来越低?主要原因有哪些? +3 瞬息宇宙 2026-08-15 3/150 2026-08-18 21:40 by xiaohuixin
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
[基金申请] 哪位老哥知道今年的国自然具体哪一天放榜? +13 Ldrop2023 2026-08-13 16/800 2026-08-18 12:25 by 淀粉搬运工
[基金申请] 93BebMhtakh前后11位开头都是大写 +4 且听虎啸 2026-08-17 5/250 2026-08-18 00:49 by 蔡棒棒菂
[基金申请] 今天系统多次维护,明天很可能放榜! +8 zju2000 2026-08-16 9/450 2026-08-17 12:20 by lmz0216
[基金申请] 各位道友,我要去昆明玩几天,回来见。 +7 Tide man 2026-08-14 8/400 2026-08-15 01:11 by arzu_hma
[基金申请] 重要来源:本周末出结果 +10 瞬息宇宙 2026-08-12 10/500 2026-08-13 15:46 by likettle
[基金申请] Filecode 又变了,巨变 +3 WH3796 2026-08-12 4/200 2026-08-13 14:13 by 小木虫6752397
信息提示
请填处理意见