




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
最近回顾Java网络编程写的一个简易聊天demo,支持群聊,UI部分较为简陋,但是功能还是满足的,可以作为Java版的聊天程序基础程序进行二次开发,代码如下:1. Server:package MuliChat;import java.awt.BorderLayout;import java.io.DataInputStream;import java.io.DataOutputStream;import .ServerSocket;import .Socket;import java.util.ArrayList;import java.util.Date;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTextArea;public class Server extends JFrame private JTextArea jTextArea = new JTextArea();public static ArrayList socketList = new ArrayList();/ ArrayList管理socket对象public static void main(String args) / TODO Auto-generated method stubnew Server();public Server() / Server UI部分setLayout(new BorderLayout();add(new JScrollPane(jTextArea), BorderLayout.CENTER);setTitle(server);setSize(500, 300);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);try ServerSocket serverSocket = new ServerSocket(8000);jTextArea.append(Server started at : + new Date() + n);int clientNum = 1;while (true) / 循环监听每一个连接到服务器端的client,并创建线程Socket socket = serverSocket.accept();jTextArea.append(Client + clientNum + connected + n);socketList.add(socket);/ socket监听对象添加进listHandleSession task = new HandleSession(socket, socketList);new Thread(task).start();/ 为每一个client各启动一次线程clientNum+; catch (Exception e) / TODO: handle exception/* * 内部类线程task * * author Alex * */class HandleSession implements Runnable Socket client;ArrayList clients;DataInputStream fromClient;DataOutputStream toClient;/ 构造函数public HandleSession(Socket client, ArrayList clients)throws Exception super();this.client = client;this.clients = clients;fromClient = new DataInputStream(client.getInputStream();public void run() / TODO Auto-generated method stubtry while (true) String content = fromClient.readUTF();/ 获取client的输入值jTextArea.append(content + n);if (content != null) for (Socket socket : clients) / foreach遍历if (client != socket) / 对不是自己本身的Client对象都输出一次值toClient = new DataOutputStream(socket.getOutputStream();toClient.writeUTF(content);/ 传递到Client中 catch (Exception e) / TODO: handle exception2. Client:package MuliChat;import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import .Socket;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;/* * 使用一个线程实现两个Cilent聊天 * * author Alex * */public class Client extends JFrame private JTextArea jArea = new JTextArea();private JTextField jTextField = new JTextField();private DataInputStream fromServer;private DataOutputStream toServer;public static void main(String args) / TODO Auto-generated method stubnew Client();public Client() / Client UI 部分JPanel panel = new JPanel();panel.setLayout(new BorderLayout();panel.add(new JLabel(Enter), BorderLayout.EAST);panel.add(jTextField, BorderLayout.CENTER);jTextField.setHorizontalAlignment(jTextField.LEFT);setLayout(new BorderLayout();add(panel, BorderLayout.SOUTH);add(new JScrollPane(jArea), BorderLayout.CENTER);setTitle(Client);setSize(400, 400);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);jTextField.addActionListener(new TextFieldListener();try Socket socket = new Socket(localhost, 8000);fromServer = new DataInputStream(socket.getInputStream();toServer = new DataOutputStream(socket.getOutputStream();while (true) String strFromServer = fromServer.readUTF();jArea.append(strFromServer + n); catch (Exception e) / TODO: handle exceptionprivate class TextFieldListener implements ActionListener public void actionPerformed(ActionEvent e) / TODO Auto-generated method stubString stringToServe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江苏泰州市姜堰中医院招聘卫生专业技术人员30人模拟试卷完整答案详解
- 2025辽宁沈阳高新人力资源服务有限公司森林警卫队员储备岗招聘模拟试卷及完整答案详解一套
- 2025江苏苏州市相城区教育系统招聘事业编制教师66人模拟试卷及答案详解(易错题)
- 2025广西南宁市五象新区第一实验小学招聘5人模拟试卷及完整答案详解1套
- 2025年河北顺德投资集团有限公司公开招聘劳务派遣人员4名模拟试卷及答案详解(易错题)
- 2025贵阳学院人才引进15人模拟试卷(含答案详解)
- 2025年福建省福州地铁实业有限公司招聘1人考前自测高频考点模拟试题完整参考答案详解
- 2025中国雄安集团有限公司社会招聘50人笔试题库历年考点版附带答案详解
- 美国旅游课件
- 2025合作协议书模板
- 2023-2024届高考语文复习诗歌专题训练-主题“羁旅行役”
- 经济与社会 思维导图式复习课件高中政治统编版必修二经济与社会
- 《系统工程与决策分析》全册配套课件
- DL∕T 2033-2019 火电厂用高压变频器功率单元试验方法
- 高中数学-斐波那契数列与黄金分割教学设计
- 数据驱动的教育决策
- 农作物植保员职业技能竞赛题库及答案
- T梁湿接缝及横隔梁施工方案
- (完整)易制毒化学品使用管理责任书
- 石群邱关源电路课件(第8至16单元)白底
- 个人增资入股合同
评论
0/150
提交评论