求救!!紧急..

07-11-13 zhangfeixia
我这里有个UDP聊天程序,但是不可以保存聊天记录,不知道该加哪些语句去实现.. 希望大家帮帮忙,谢谢

package myprojects.chat;

import java.awt.*;

import java.awt.event.*;

import java.net.*;

class Chat extends Frame{

List lst=new List(10);

TextField tfIP=new TextField(15);

TextField tfData=new TextField(20);

DatagramSocket ds=null;

public Chat(){

try{ds=new DatagramSocket(3000);}

catch(Exception e)

{e.printStackTrace();}

this.add(lst,"South");

Panel p=new Panel();

this.add(p,"North");

p.setLayout(new BorderLayout());

p.add(tfIP,"West");

p.add(tfData,"East");

new Thread(new Runnable()

{

public void run()

{byte buf[]=new byte[1024];

DatagramPacket dp=new DatagramPacket(buf,1024);

while(true){

try{

ds.receive(dp);

lst.add(new String(buf,0,dp.getLength())+"from"+dp.getAddress().getHostAddress()+":"+dp.getPort());}

catch(Exception e){if(!ds.isClosed())

{e.printStackTrace();}

}

}

}

}).start();

tfData.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e)

{ byte [] buf;

buf = tfData.getText().getBytes();

try

{DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName(tfIP.getText()),3000);

ds.send(dp);}

catch(Exception ex)

{ex.printStackTrace();}

tfData.setText("");

}

});

addWindowListener(new WindowAdapter()

{public void windowClosing(WindowEvent e)

{ds.close();

dispose();

System.exit(0);}

});

}

public static void main(String args[])

{

System.out.println("starting chat");

Chat mainFrame=new Chat();

mainFrame.setSize(300,300);

mainFrame.setTitle("Chat");

mainFrame.setVisible(true);

mainFrame.setResizable(false);

}

}

猜你喜欢