java小型聊天室源代码

来源:互联网 发布:编程中的类和对象 编辑:程序博客网 时间:2024/05/10 03:28
import java.awt.BorderLayout;import java.awt.Color;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.TextArea;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.net.UnknownHostException; import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollBar;import javax.swing.JScrollPane;  public class UDPChat extends JFrame implements ActionListener{     public TextArea textmessage = null;    public TextArea sendtext = null;    public DatagramSocket socket;    public JScrollBar vsBar;    public UDPChat()    {       super();       setTitle("小型聊天程序");       setBounds(200,150,350,280);       JPanel panel1 = new JPanel();       JPanel panel2 = new JPanel();       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       setBackground(Color.BLACK);       textmessage = new TextArea();       sendtext = new TextArea();             textmessage.setEditable(false);       textmessage.setColumns(35);       textmessage.setRows(10);    //  textmessage.setLineWrap(true);             sendtext.setColumns(35);       sendtext.setRows(2);        JButton buttonOK = new JButton("确定");       JButton buttonclean = new JButton("清空");       JButton buttonquit = new JButton("退出");       GridLayout grid =  new GridLayout(3,1);       grid.setHgap(10);       grid.setVgap(10);       panel1.setLayout(grid);    //  panel1.setLayout(new GridLayout(3,1));        panel1.add(buttonOK);       panel1.add(buttonclean);       panel1.add(buttonquit);        panel2.setLayout(new FlowLayout());       panel2.add(textmessage);       panel2.add(sendtext);       getContentPane().add(panel1,BorderLayout.EAST);       getContentPane().add(panel2,BorderLayout.CENTER);       setVisible(true);       buttonOK.addActionListener(this);       buttonclean.addActionListener(this);       buttonquit.addActionListener(this);       server();    }    public void server()    {       try{           socket = new DatagramSocket(9527);           byte[] buf = new byte[1024];           final DatagramPacket dp1 = new DatagramPacket(buf,buf.length);           Runnable run = new Runnable(){              public void run()              {                  while(true)                  {                     try{                         Thread.sleep(100);                         socket.receive(dp1);                         int len = dp1.getLength();                         String message = new String(dp1.getData(),0,len);                         String ip = dp1.getAddress().getHostAddress();                         System.out.println(ip);                         if(!InetAddress.getLocalHost().getHostAddress().equals(ip))                            textmessage.append(ip+"\n"+message+'\n');                     }catch(IOException e)                     {                         e.printStackTrace();                     }                     catch(InterruptedException e)                     {                         e.printStackTrace();                     }                  }              }           };           new Thread(run).start();       }catch(SocketException e)       {           e.printStackTrace();       }    }    public static void main(String[] args) {       UDPChat udp = new UDPChat();    }    @Override    public void actionPerformed(ActionEvent e) {       // JButton button = (JButton) e.getSource();       String buttonname =e.getActionCommand();       if(buttonname.equals("退出"))           System.exit(0);       if(buttonname.equals("清空"))       {           textmessage.setText("");       }       if(buttonname.equals("确定"))       {           String iP = "192.168.8.15";           try {              InetAddress address =InetAddress.getByName(iP);              byte []data  = sendtext.getText().getBytes();              DatagramPacket dp = new DatagramPacket(data,data.length,address,9527);              String myip = InetAddress.getLocalHost().getHostAddress();              textmessage.append(myip +"  \n"+sendtext.getText() +"\n");              socket.send(dp);              sendtext.setText("");           } catch (UnknownHostException e1) {              // TODO Auto-generated catch block              e1.printStackTrace();           } catch (IOException e1) {              // TODO Auto-generated catch block              e1.printStackTrace();           }             }    }}

原创粉丝点击