import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
class UDPServer extends Frame implements ActionListener
{
TextArea ta1=new TextArea();
Button b1 = new Button("Start");
Button b2 = new Button("Stop");
Thread thread;
DatagramSocket socket;
public class StartThread implements Runnable{
StartThread(){
thread = new Thread(this);
thread.start();
b1.setEnabled(false);
b2.setEnabled(true);
}
public void run(){
try{
byte[] buffer = new byte[1024];
int port = 8080;
try{
socket = new DatagramSocket(port);
while(true){
try{
ta1.append("Server is started\n");
//Receive request from client
DatagramPacket packet = new DatagramPacket(buffer, buffer.length );
socket.receive(packet);
InetAddress client = packet.getAddress();
int client_port = packet.getPort();
ta1.append(" Received "+new String(buffer)+" from "+client);
}
catch(UnknownHostException ue){}
}
}
catch(java.net.BindException b){}
}
catch (IOException e){
System.err.println(e);
}
}
}
public UDPServer(String title)
{
super(title);
setLayout(new FlowLayout());
add(ta1);
add(b1);
add(b2);
b1.addActionListener(this);
b2.addActionListener(this);
}
public void actionPerformed(ActionEvent ae)
{
if (ae.getSource()==b1)
{
new StartThread();
}
else if (ae.getSource()==b2)
{
thread.interrupted();
socket.close();
ta1.append("Server is stopped\n");
b1.setEnabled(true);
b2.setEnabled(false);
}
}
public static void main(String args[])
{
UDPServer f=new UDPServer("I am a UDP Server!");
f.setSize(600,600);
f.setVisible(true);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
}
}