let me test your code.

解决方案 »

  1.   

    OK,因为我有两台机器,所以发信息是指定的IP
    import java.awt.*;
    import java.io.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.net.*;public class ChatMain
    {
    public static void main(String[] args)
    {
    new pframe();
    UdpThread ut=new UdpThread();
    ut.start();
    }
    }
    /////////////UDPTHREAD
    class UdpThread extends Thread
    {
    static DatagramSocket udpsocket;
    public UdpThread()
    {
    try
    {
                udpsocket=new DatagramSocket(2001);
    }
    catch(Exception e)
    {
    }
    }
    public void run()
    {
    while(true)
    {
    try
    {
    byte dataBuf[]=new byte[512];
        String data;
        InetAddress host;
        int port;
        DatagramPacket recedata=new DatagramPacket(dataBuf,512);

    udpsocket.receive(recedata);

                    data=new String(recedata.getData(),recedata.getLength());
        host=recedata.getAddress();
                    port=recedata.getPort();
        ChatPane pop=new ChatPane();
        pop.textarea.setText("From:"+host+":"+port+"\n"+"MESSAGE___:"+data);
                    pop.show();
    }
    catch(Exception ec)
    {

    }
    }
    }
    }
    /////////////UDPTHREAD END
    class pframe extends JFrame
    {
    private Container con;
    private String s1;
    private int mes_num;
    private JButton button2;
    private JLabel label2;
    private Icon icon;
    private JButton button;
    private JPanel panel;
    public pframe()
    {
    setTitle("MYQQ VISION 0.1");
    con=getContentPane();
    s1="New Message : ";
    mes_num=0;
    icon=new ImageIcon("boy.gif");
    button2=new JButton(icon);
    button2.setBorder(BorderFactory.createTitledBorder("Boy"));
    button2.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {
    (new ChatPane()).show();
    }
    });
            label2=new JLabel(s1+mes_num);
    button=new JButton("Chat");
    button.setIcon(new ImageIcon("chat.gif"));
            panel=new JPanel(new FlowLayout());
    panel.add(button2);
    panel.add(label2);
    panel.add(button);
    panel.setBorder(BorderFactory.createTitledBorder("MYQQ VISION 0.1"));
    con.add(panel,BorderLayout.CENTER);
    setSize(300,210);
    show();
    }
    }
    //////////ChatPane();
    class ChatPane extends JFrame
    {
    JTextArea textarea;
    private Container con;
    private JScrollPane sp;
    private JPanel ctrl;
    private JButton send;
    private JButton clear;
    public ChatPane()
    {
    con=getContentPane();
    setBounds(300,300,243,230);
    setTitle("ChatPane");
    textarea=new JTextArea(230,190);
    textarea.setFont(new Font("宋体",Font.PLAIN,12));
    sp=new JScrollPane(textarea);
    ctrl=new JPanel(new FlowLayout());
            send=new JButton("Send");
    send.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {
    try
    {
    InetAddress ads=InetAddress.getByName("10.10.111.33");
    String sss=textarea.getText();
    int l=sss.length();
    byte b[]=sss.getBytes();
    DatagramPacket gram=new DatagramPacket(b,l,ads,2001);
    UdpThread.udpsocket.send(gram);
    }
    catch(Exception abc)
    {
    System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&");
    }
    dispose();
    }
    });
    clear=new JButton("Clear");
    clear.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent ee)
    {
    textarea.setText("");
    }
    });
    ctrl.add(send);
    ctrl.add(clear);
            con.add(textarea,BorderLayout.CENTER);
    con.add(ctrl,BorderLayout.SOUTH);
    }
    }
      

  2.   

    strBefore = new String(strBefore.getBytes(), "8859_1");