import java.awt.*;
import java.awt.event.*;
import java.net.*;
public class GUIchat {
/**
 * @param args
 */
Frame f=new Frame("我的聊天室");
TextField tf1=new TextField(15);
List l=new List(6);
DatagramSocket ds;//
public GUIchat()//DatagramSocket构造函数时候可能会抛出异常,所以要弄这个try..catch异常铺货处理
{
try
{
ds=new DatagramSocket(2699);
}
catch(Exception e){}
new Thread(new Runnable()
{
public void run()
{
byte buf[]=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,1024);
while(true)
{
try
{
ds.receive(dp);
l.add(new String(buf,0,dp.getLength())+" :from "+dp.getAddress().getHostAddress(),0);       
}catch(Exception e){}
}
}//接受信息程序
}).start();
}

解决方案 »

  1.   

    public static void main(String[] args) 
    {
    GUIchat chat=new GUIchat();
    chat.init();
    }////
    public void init()
    {
    f.setSize(300,300);
    f.add(l);
    Panel p=new Panel();
    p.setLayout(new GridLayout(1,2));
    TextField tf2=new TextField(20);
    p.add(tf1);
    p.add(tf2);


    f.add(p,"South");
    f.setVisible(true);
    f.setResizable(false);
    f.addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
    {
    ds.close();
    f.dispose();
    System.exit(0);
    }
    });
    tf2.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e) 
    {
    byte [] buf=e.getActionCommand().getBytes();
    DatagramPacket dp = new DatagramPacket(buf,buf.length,
    InetAddress.getByName(tf1.getText()),2699);
        try
        {
         ds.send(dp);
        }catch(Exception ex){ex.printStackTrace();}

    ((TextField)e.getSource()).setText(" ");//消息发送

    }
    });
    }}
      

  2.   

    InetAddress.getByName(tf1.getText()),2699);一直说这里有问题Unhandled exception type UnknownHostException
    请那位大神解决下,谢谢啦
      

  3.   

    上面的全部是我的代码,我运行的时候,说那里出现问题,可是我查了下,
    DatagramPacket不需要抛出异常吧,那到底咋回事
      

  4.   

    你在GUI界面怎么输入的,输入的是什么?
      

  5.   

    我预期的是想在那里输入对方的InetAddress
      

  6.   

    你应该让从文本输入后,然后实例化InetAddress.getByName(tf1.getText()),2699);
      

  7.   

    你只要点击输入框就会往下执行,建议不要对输入框使用ActionListener,
    改用其他监听器吧,好久没弄GUI了,忘了,LZ自己网上查下吧。