JAVA聊天室源码.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《JAVA聊天室源码.doc》由会员分享,可在线阅读,更多相关《JAVA聊天室源码.doc(61页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateJAVA聊天室源码/聊天室服务器/聊天室服务器import .*;import java.io.*;import java.util.*;import java.awt.event.*;import java.awt.*;import javax.swing.*;class Server extends JFrame private TextArea msgA = n
2、ew TextArea();/服务器用来输入的文本域private TextArea area = new TextArea();/服务器显示消息的文本域private TextField portT = new TextField(8888);private java.awt.List list = new java.awt.List();/在线客户列表private ServerSocket server;/服务器private Socket client;/客户端private Map container = new HashMap();/HashMapvoid init() /设置几个
3、面板/ Panel p1 = new Panel(); Panel p2 = new Panel(); Panel p3 = new Panel(); Panel p4 = new Panel(); Panel p5 = new Panel(); Panel p6 = new Panel(); Panel p7 = new Panel(); Panel p8 = new Panel(); Panel p9 = new Panel(); Panel p10 = new Panel(); /设置两个主要的文本框 Label lb1 = new Label(服务器界面); lb1.setBackgr
4、ound(new Color(250,120,150); Label lb2 = new Label(port); BorderLayout border1 = new BorderLayout(); p1.setLayout(border1); p1.add(BorderLayout.CENTER, area); BorderLayout border2 = new BorderLayout(); p5.setLayout(border2); p5.add(BorderLayout.NORTH, p3); p5.add(BorderLayout.CENTER, msgA); BorderLa
5、yout border3 = new BorderLayout(); p7.setLayout(border3); p7.add(BorderLayout.CENTER, p1); p7.add(BorderLayout.SOUTH, p5); p7.setBackground(new Color(250,150,200); JButton startButton = new JButton(启动服务); JButton sendButton = new JButton(发送); JButton flushButton = new JButton(刷新列表); FlowLayout fl =
6、new FlowLayout(FlowLayout.LEFT); p8.setLayout(fl); p8.add(lb2); p8.add(portT); p8.add(startButton); p8.add(sendButton); p8.add(flushButton); p8.setBackground(new Color(250,120,150); BorderLayout border4 = new BorderLayout(); p9.setLayout(border4); p9.add(BorderLayout.CENTER, p7); p9.add(BorderLayout
7、.SOUTH, p8); p10.setLayout(new BorderLayout(); Label lb3 = new Label(在线用户); lb3.setBackground(new Color(250,120,150); p10.add(lb3,BorderLayout.NORTH); p10.add(list,BorderLayout.CENTER); area.setEditable(false); BorderLayout border = new BorderLayout(); this.addWindowListener(new WindowAdapter() publ
8、ic void windowClosing(WindowEvent arg0) System.exit(0); ); this.setLayout(border); this.add(BorderLayout.NORTH, lb1); this.add(BorderLayout.CENTER, p9); this.add(BorderLayout.EAST, p10); this.setTitle(聊天服务器 ); this.setBounds(100, 100, 600, 550); this.setVisible(true); /启动服务按钮监听器 startButton.addActio
9、nListener(new ActionListener() public void actionPerformed(ActionEvent e) Thread t = new Start(); t.start(); );/启动按钮监听器-end /发送按钮监听器 sendButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String msg = msgA.getText(); if (msg != null & msg != ) /如果消息不为空 Calendar
10、ca = new GregorianCalendar(); int hh = ca.get(Calendar.HOUR_OF_DAY); int mm = ca.get(Calendar.MINUTE); int ss = ca.get(Calendar.SECOND); String time = new String(hh + : + mm + : + ss + ); broadcast(time + 系统消息: + msg);/那么广播这条系统消息 area.append(time + 系统消息: + msg + n); msgA.setText(); );/end /刷新按钮监听器 f
11、lushButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if (list != null) list.removeAll();/清空在线用户列表,以便刷新 SetMap.Entry mySet = container.entrySet(); for (IteratorMap.Entry it = mySet.iterator(); it.hasNext();) /刷新列表 Map.Entry me = it.next(); String aClientName =
12、me.getKey(); Socket aClient = me.getValue(); String aClientAddress = aClient.getInetAddress().getHostAddress(); list.add(aClientName + - + aClientAddress); /end of for /end of actionPerformed );/end msgA.addKeyListener(new KeyAdapter()/键盘监听器-按下Enter发送信息 public void keyPressed(KeyEvent e) int value =
13、 e.getKeyCode(); if(value = KeyEvent.VK_ENTER) String msg = msgA.getText(); Calendar ca = new GregorianCalendar(); int hh = ca.get(Calendar.HOUR_OF_DAY); int mm = ca.get(Calendar.MINUTE); int ss = ca.get(Calendar.SECOND); String time = new String(hh + : + mm + : + ss + ); broadcast(time + 系统消息: + ms
14、g);/那么广播这条系统消息 area.append(time + 系统消息: + msg + n); msgA.setText(); );/end of init()class Start extends Thread /启动服务器的线程 public void run() try if(server != null & !server.isClosed() area.append(警告!服务器已在启动中!n); else server = new ServerSocket(Integer.parseInt(portT.getText();/启动服务器 area.append(new Dat
15、e().toString() +n+ 恭喜!_+服务器启动成功! + nn); while(true) client = server.accept(); Thread sgS = new SgService(client);/为每位登录的客户创建一个线程 sgS.start();/启动客户线程 catch (Exception e) System.out.println(cuowu 1); e.printStackTrace(); /end of run() /end of Start/处理单个客户的线程class SgService extends Thread/SgService-beg
16、in private Socket client = null;/客户套接字 private BufferedReader br = null;/输入流 private PrintStream ps = null; private int counter = 0;/记录是第几次接受用户的信息 private int mark = 0;/记录用户说不文明用语的次数 private String name = null; SgService(Socket client) /构造方法 this.client = client; public void run() /run()-begin try b
17、r = new BufferedReader(new InputStreamReader(client.getInputStream(); ps = new PrintStream(client.getOutputStream(); String msg = null; while (msg = br.readLine() != null) /无限循环,意味着可以和客户进行无限次交互 if(counter = 0) name = msg; container.put(name,client); list.add(name + - + client.getInetAddress().getHos
18、tAddress(); Calendar ca = new GregorianCalendar(); int hh = ca.get(Calendar.HOUR_OF_DAY); int mm = ca.get(Calendar.MINUTE); int ss = ca.get(Calendar.SECOND); String time = hh + : + mm + : + ss + ; broadcast(time + name + 上线了!); area.append(time + name + 上线了!nn); counter +; else if(msg.equals(你是个笨蛋)
19、mark = mark + 1; if(mark 3) Calendar ca = new GregorianCalendar(); int hh = ca.get(Calendar.HOUR_OF_DAY); int mm = ca.get(Calendar.MINUTE); int ss = ca.get(Calendar.SECOND); String time = new String(hh + : + mm + : + ss + ); singleCom(time +系统消息: 警告!请注意文明用语! ,client); /在服务器端显示这个用户说不文明语言的次数 area.appe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 聊天室 源码
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内