package mysocket2;
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.*;
import java.awt.event.*;
public class Frame1 extends JFrame implements Runnable {
JPanel contentPane;
BorderLayout borderLayout1 = new BorderLayout();
JPanel jPanel1 = new JPanel();
JScrollPane jScrollPane1 = new JScrollPane();
JTextArea jTextArea1 = new JTextArea();
JTextField jTextField1 = new JTextField();
JButton jButton1 = new JButton();
public void run(){
byte buffer[]=new byte[ 1024];
try{
DatagramSocket so=new DatagramSocket(5555);
DatagramPacket p=new DatagramPacket(buffer,buffer.length );
while(true){
so.receive(p);
String host= p.getAddress() .getHostName() ;
int lenght=p.getLength() ;
String message=new String(p.getData() ,0,lenght);
int port=p.getPort() ;
jTextArea1.append(host+"发来消息:"+message+"/n");
jTextArea1.append("数据长度:"+lenght+"/n");
jTextArea1.append("数据来源:"+port+"端口/n");
}
}
catch(Exception e){
e.printStackTrace() ;
}
}
public Frame1() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
Thread t=new Thread(this);
t.start() ;
} catch (Exception exception) {
exception.printStackTrace();
}
}
/**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
contentPane = (JPanel) getContentPane();
contentPane.setLayout(borderLayout1);
setSize(new Dimension(400, 300));
setTitle("上海");
jButton1.setText("发送");
jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this));
jTextField1.setColumns(40);
jPanel1.add(jTextField1);
jPanel1.add(jButton1);
contentPane.add(jScrollPane1, java.awt.BorderLayout.CENTER);
contentPane.add(jPanel1, java.awt.BorderLayout.NORTH);
jScrollPane1.getViewport().add(jTextArea1);
}
public void jButton1_actionPerformed(ActionEvent e) {
byte data[]=jTextField1.getText().getBytes();
try{
DatagramSocket so=new DatagramSocket() ;
InetAddress address=InetAddress.getByName("localhost");
DatagramPacket p=new DatagramPacket(data,data.length ,address,6666);
so.send(p);
jTextField1.setText("");
}
catch(Exception ee){
ee.printStackTrace() ;
}
}
}
class Frame1_jButton1_actionAdapter implements ActionListener {
private Frame1 adaptee;
Frame1_jButton1_actionAdapter(Frame1 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}