📄 chatprogram.java
字号:
package com.briup.dasheji;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;import java.net.*;public class ChatProgram{ public static void main(String[] args){ try{ InitGUI mygui = new InitGUI(); }catch(Exception e){e.printStackTrace();} }}class InitGUI{ JRadioButton[] jrb = new JRadioButton[2]; JButton jb1,jb2,jb3; Runner runner; public TextArea ta = new TextArea(); public TextArea tb = new TextArea(); public MulticastSocket msocket = null; public DatagramPacket packet = null; public DatagramSocket socket = null; public InitGUI(){ //大致轮廓 JFrame jf = new JFrame("简单聊天室"); jf.setBounds(100,100,350,450); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = jf.getContentPane(); c.setLayout(new BorderLayout()); //图形头部 //JRadioButton[] jrb = new JRadioButton[2]; jrb[0] = new JRadioButton("服务器端"); jrb[1] = new JRadioButton("客户端"); jrb[0].setEnabled(true); jrb[1].setEnabled(false); JPanel p1 = new JPanel(new FlowLayout()); p1.add(jrb[0]); p1.add(jrb[1]); c.add(p1,BorderLayout.NORTH); //图形中部 JPanel p2 = new JPanel(); ta = new TextArea(12,40); p2.add(ta,BorderLayout.NORTH); c.add(p2,BorderLayout.CENTER); //图形底部 JPanel p3 = new JPanel(); p3.setLayout(new BorderLayout()); JPanel p31 = new JPanel(); tb = new TextArea(6,40); p31.add(tb,BorderLayout.NORTH); p3.add(p31,BorderLayout.CENTER); JPanel p32 = new JPanel(); p32.setLayout(new FlowLayout()); jb1 = new JButton("开始"); jb2 = new JButton("发送"); jb3 = new JButton("结束"); jb1.setEnabled(false); jb2.setEnabled(false); jb3.setEnabled(true); p32.add(jb1); p32.add(jb2); p32.add(jb3); p3.add(p32,BorderLayout.SOUTH); c.add(p3,BorderLayout.SOUTH); jf.setVisible(true); jrb[0].addActionListener(new AllListener()); jrb[1].addActionListener(new AllListener()); jb1.addActionListener(new AllListener()); jb2.addActionListener(new AllListener()); jb3.addActionListener(new AllListener()); } class AllListener implements ActionListener{ public void actionPerformed(ActionEvent e){ if(e.getSource()==jrb[0]){ jrb[0].setEnabled(false); runner = new Runner(); ta.append(" 服务器已连接 \n"); jrb[1].setEnabled(true); } if(e.getSource()==jrb[1]){ jrb[1].setEnabled(false); ta.append(" 客户端已连接 \n"); jb1.setEnabled(true); } if(e.getSource()==jb1){ jb1.setEnabled(false); jb2.setEnabled(true); } if(e.getSource()==jb2){ String str = tb.getText(); byte[] buffer = str.getBytes(); try{ packet = new DatagramPacket(buffer,buffer.length,InetAddress.getByName("228.7.6.5"),10000); socket = new DatagramSocket(); socket.send(packet); tb.setText(" "); }catch(Exception ie){} finally{ if(socket!= null)try{socket.close();}catch(Exception ee){} } } if(e.getSource()==jb3)System.exit(1); } } class Runner implements Runnable{ public Runner(){ new Thread(this).start(); } public void run(){ boolean run = true; InetAddress group = null; try{ group = InetAddress.getByName("228.7.6.5"); msocket = new MulticastSocket(10000); msocket.joinGroup(group); while(run){ byte[] buffer = new byte[128]; packet = new DatagramPacket(buffer,buffer.length); msocket.receive(packet); if(packet.getAddress().getHostAddress().equals("192.168.3.40" ) ) ta.append("闫正强:"); else if(packet.getAddress().getHostAddress().equals("192.168.2.24" ) ) ta.append("张林柱:");else if(packet.getAddress().getHostAddress().equals("192.168.3.125" )) ta.append("孔令峰:"); else if(packet.getAddress().getHostAddress().equals("192.168.3.88" )) ta.append("吴翠:"); else if(packet.getAddress().getHostAddress().equals("192.168.2.183") ) ta.append("韩国青:"); else if(packet.getAddress().getHostAddress().equals("192.168.2.2" )) ta.append("郝文斌:"); else if(packet.getAddress().getHostAddress().equals("192.168.3.150") ) ta.append("杜得璞:"); else if(packet.getAddress().getHostAddress().equals("192.168.4.43" )) ta.append("卢华萍:"); else if(packet.getAddress().getHostAddress().equals("192.168.3.84" )) ta.append("许蒙:"); else if(packet.getAddress().getHostAddress().equals("192.168.3.54" )) ta.append("梦琪:"); else if(!(packet.getAddress().getHostAddress().equals("228.7.6.5"))) ta.append("其他人说:"); else ta.append("我的发言:"); ta.append(" " + new String(packet.getData()).trim() + "\n"); } Thread.sleep(500); }catch(Exception e){e.printStackTrace();} finally{ if(socket!=null)try{ msocket.leaveGroup(group); msocket.close(); }catch(Exception e){} } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -