package com.hbsi.net;
import java.awt.List;
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 javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class ChatDemo2 extends JFrame{
/**
* @param args
*/
List list=new List(6);
//TextArea ta=new TextArea(10,40);
JTextField tfIp=new JTextField(15);
JTextField tfData=new JTextField(15);
JPanel p=new JPanel();
DatagramSocket ds=null;
public ChatDemo2(){
this.add(list,"Center");
p.add(tfIp);
p.add(tfData);
this.add(p,"South");
this.setSize(400,200);
this.setLocation(300,300);
this.setVisible(true);
try {
ds=new DatagramSocket(9009);
} catch (SocketException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
new Thread(new Runnable(){
@Override
public void run() {
byte [] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,buf.length);
while(true){
try {
ds.receive(dp);
//list.add(dp.getData().toString());
list.add(new String(buf,0,dp.getLength())+" from "+dp.getAddress().getHostAddress(),0);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}).start();
this.tfData.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
byte[] buf=tfData.getText().getBytes();
list.add(tfData.getText(),0);
DatagramPacket dp;
try {
dp = new DatagramPacket(buf,buf.length,InetAddress.getByName(tfIp.getText()),9009);
ds.send(dp);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
tfData.setText("");
}
});
}
public static void main(String[] args) {
ChatDemo2 chat=new ChatDemo2();
}
}