java socket聊天室

来源:互联网 发布:thewolf软件平台 编辑:程序博客网 时间:2024/04/27 05:24

[原]JavaSocket实现广播聊天室
Server:

 

package ChatIV;
import java.net.*;
import java.io.*;
import java.util.*;

//广播聊天室服务端
public class Server {
    public static void main(String args[]){
        try {
            ServerSocket ss = new ServerSocket(8186);//实现Socket
            List sockets = new ArrayList();//创建一个集合,保存文字消息
            while(true){
                Socket s = ss.accept();//监听8186
                sockets.add(s);//向集合中添加Socket的对象S,把听到的内容保存到集合中
                Thread t1 = new ChatThread(s,sockets);//线程
                t1.start();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }   
}
class ChatThread extends Thread{
    Socket s;
    List sockets;
    public ChatThread(Socket s,List sockets){
        this.s=s;
        this.sockets=sockets;
    }
    public void run(){
        try {
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(s.getInputStream()));//包装成字符流
            while(true){
                String str = in.readLine();//读BufferedReader
                for(int i=0;i<sockets.size();i++){//利用For循环遍历集合
                    Socket s2 = (Socket)sockets.get(i);//创建Socket对象S2,强转成Socket,并获取下标
                    PrintWriter out = new PrintWriter(s2.getOutputStream());//文本流输出
                    out.println(str);//打印字符
                    out.flush();//刷新该流的缓冲
                }
            }
        } catch (IOException e) {}
        finally{
            try {
                s.close();
            } catch (IOException e) {}
        }
    }
}

 

Client:

 

package ChatIV;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

//广播聊天室客户端
public class Client {
    JTextArea jta;
    JTextField jtf;
    BufferedReader in;
    PrintWriter out;
    //Swing画一个界面
    private void initGUI(){
        JFrame f=new JFrame("Client");
        f.setSize(400,300);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jta=new JTextArea();
        jta.setEditable(false);
        f.add(new JScrollPane(jta));
        jtf=new JTextField();
        f.add(jtf,"South");
        f.setVisible(true);
        jtf.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent arg0) {
                String text=jtf.getText();
                jtf.setText("");
                out.println(text);
                out.flush();
            }
        });
    }
    //连接初始化
    private void initNet(){
        try {
            Socket s = new Socket("127.0.0.1",8186);//创建Socket端口8186,端口号随意,避免常用端口即可
            out = new PrintWriter(s.getOutputStream());//文本流输出,利用Socket对象获得getOutputStream()
            in = new BufferedReader(new InputStreamReader(s.getInputStream()));//包装成字符流
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //消息接收
    private void receive(){
        try {
            while(true){
                String str = in.readLine();//读BufferedReader
                if(str==null){
                    return ;
                }
                jta.append("说"+str+"/n");//加载到JTextArea中,显示
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    private Client(){
        this.initGUI();
        this.initNet();
    }
    public static void main(String args[]){
        Client c = new Client();
        c.receive();
    }
}

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 注销营业执照公章丢失怎么办 工厂招聘信息有假怎么办 个体餐饮怎么办核名 见父母后接下来怎么办 工商核名重名怎么办 核名通知书过期怎么办 包头鼎太风华怎么办 用人单位不续签劳动合同怎么办 全是英文看不懂怎么办 孩子智力发育晚怎么办 公司比赛成绩不好怎么办 解压手续过期了怎么办 违章通知单丢了怎么办 住在朋友家怎么办暂住证 告知单丢了怎么办 身份证丢了怎么办暂住证 合肥居住证失效了怎么办 异地办牌照暂住证怎么办 外地牌照上保险怎么办 住公租房怎么办暂住证 暂住证怎么办 异地学车 外地人怎么办北京市工作居住证 电大挂科很多怎么办 南通电大挂科怎么办 大学出现挂科怎么办 在北京没暂住证怎么办 我想买北京车牌怎么办 想买北京车牌怎么办 北仑这边暂住证怎么办 深圳居住证过期了怎么办 北京不办暂住证怎么办 上海居住证怎么办办理入学 在异地办居住怎么办 色盲体检没过怎么办 c1体检是色弱怎么办 驾驶档案袋拆了怎么办 档案自己拆了怎么办 驾驶证档案丢失了怎么办 驾驶证档案拆了怎么办 车牌转回老家保险怎么办 驾照过期十天怎么办