Unicast messaging is used for all network processes in which a private or unique resource is requested.
import java.awt.*; import java.awt.event.*; import java.net.*; import javax.swing.JFrame; public class Unicast extends JFrame implements ActionListener{ Label entermsgl,receivedmsgl,sentmsgl,toportl; TextField entermsg,toport; TextArea receivedmsg,sentmsg; Button send,exit; int myport; DatagramSocket ds; DatagramPacket dp; Unicast(){ new InputDialog(this); } public void initialise(){ setTitle("Unicast --Port:"+myport); setVisible(true); setSize(600,400); entermsgl=new Label("Enter Message:"); receivedmsgl=new Label("Received Messages:"); sentmsgl=new Label("Sent Messages:"); toportl=new Label("To"); toport=new TextField(); entermsg=new TextField(); receivedmsg=new TextArea(); sentmsg=new TextArea(); send=new Button("Send"); exit=new Button("Exit"); setLayout(null); add(entermsgl); entermsgl.setBounds(25,25,100,25); add(receivedmsgl); receivedmsgl.setBounds(25,70,150,25); add(sentmsgl); sentmsgl.setBounds(25,185,150,25); add(toportl); toportl.setBounds(350,25,25,25); add(toport); toport.setBounds(380,25,70,25); add(entermsg); entermsg.setBounds(130,25,200,25); add(receivedmsg); receivedmsg.setBounds(180,70,370,100); add(sentmsg); sentmsg.setBounds(180,185,370,100); add(send); send.setBounds(470,25,100,25); add(exit); exit.setBounds(250,300,100,25); try{ ds=new DatagramSocket(myport); }catch(Exception e){ System.out.println(e); } send.addActionListener(this); exit.addActionListener(this); new Receive(); } class Receive extends Thread{ Receive(){ start(); } public void run(){ while(true){ try{ byte b[]=new byte[100]; dp=new DatagramPacket(b,b.length); ds.receive(dp); receivedmsg.append("From "+dp.getPort()+": "+new String(dp.getData(),0,dp.getLength())+"n"); }catch(Exception e){ } } } } public void actionPerformed(ActionEvent ae){ if(ae.getSource()==send){ byte b[]=entermsg.getText().getBytes(); try{ int port=Integer.parseInt(toport.getText()); if(port<1024 || port>65536){ toport.setText(""); return; } dp=new DatagramPacket(b,b.length,InetAddress.getLocalHost(),port); ds.send(dp); sentmsg.append("To "+port+": "+entermsg.getText()+"n"); }catch(NumberFormatException nfe){ toport.setText(""); }catch(Exception e){ } } else{ System.exit(0); } } public static void main(String args[]){ new Unicast(); } } class InputDialog extends Dialog implements ActionListener{ Button ok=new Button("Ok"); Button cancel=new Button("Cancel"); TextField tf=new TextField(); Label l=new Label("Enter the port number:"); Unicast parent; InputDialog(Unicast f){ super(f,"Unicast - Port number"); parent=f; setVisible(true); setSize(400,200); setLayout(null); add(l); l.setBounds(25,50,200,25); add(tf); tf.setBounds(225,50,100,25); add(ok); ok.setBounds(100,100,100,25); add(cancel); cancel.setBounds(220,100,100,25); ok.addActionListener(this); cancel.addActionListener(this); } public void actionPerformed(ActionEvent ae){ if(ae.getSource()==ok){ try{ int n=Integer.parseInt(tf.getText()); if(n>1023 && n<65536){ parent.myport=n; parent.initialise(); this.dispose(); } else{ tf.setText(""); tf.requestFocus(); } }catch(NumberFormatException nfe){ tf.setText(""); tf.requestFocus(); } } else if(ae.getSource()==cancel){ System.exit(0); } } }