I am creating a program that runs on two computers, one runs a sender program, the other a receiver.

I have coded it so that the sender sends a datagram to the other computer. This works fine.

My problem is I now need to send a message back to the sender program. I have extracted the ip address, and the port, all i need to do is change the message in the datagram, and then send it back.

My code is as follows:

Sender
----------------------------------------------------------------------
import java.net.*; // for network
import java.util.*; // for utilities
import java.io.*; // for streams
import Command.*;

public class ex11sender
{

public static void main(String[] argv)
{
try
{
InetAddress addr = InetAddress.getByName("IP.IP.IP.IP");
//InetAddress addr = InetAddress.getLocalHost();
int sendPortNumber = 2000;
int portNumber = 5000;

Command data = new Command("Alex","Gregory",10);

DatagramSocket socket = new DatagramSocket(sendPortNumber);

// now create and send packet
ByteArrayOutputStream bos = new ByteArrayOutputStream(256);
ObjectOutputStream out = new ObjectOutputStream(bos);

out.writeObject(data);
byte[] buffer = bos.toByteArray();
DatagramPacket packet =
new DatagramPacket(buffer,buffer.length,addr,portNumber);



System.out.println("ready to send on " +
socket.getLocalAddress().toString() +
" port: " + socket.getLocalPort());


socket.send(packet);

System.out.println("Packet data sent");

}
catch (UnknownHostException uh)
{
System.out.println("ERROR: " + uh);
System.exit(0);
}
catch (IOException ioe)
{
System.out.println("ERROR: " + ioe);
}
}
}

----------------------------------------------------------------------
Receiver
----------------------------------------------------------------------
import java.net.*; // for network
import java.util.*; // for utilities
import java.io.*; // for streams
import Command.*;

public class ex11receiver
{

public static void main(String[] argv)
{
try
{
int portNumber = 5000;
int port;
InetAddress address;


// assume that machine and port to send to are in arg vector
if (argv.length == 1)
{
portNumber = Integer.parseInt(argv[1]);
}

// now create and send packet

byte[] buffer = new byte[1024];
DatagramPacket packet =
new DatagramPacket(buffer,buffer.length);

DatagramSocket socket = new DatagramSocket(portNumber);
socket.setSoTimeout(0);
System.out.println("ready to receive on " +
socket.getLocalAddress().toString() +
" port: " + socket.getLocalPort());

socket.receive(packet);
address = packet.getAddress();
port = packet.getPort();
socket.send(packet);

ByteArrayInputStream bin = new ByteArrayInputStream(packet.getData());
ObjectInputStream in = new ObjectInputStream(bin);

// now read object from stream

Command data = (Command)in.readObject();

System.out.println("Received " + data.toString());
System.out.println("Port is " + port);
System.out.println("Address is " + address);

}
catch (ClassNotFoundException nfe)
{
System.out.println("Failed to read data");
}
catch (IOException ioe)
{
System.out.println("ERROR: " + ioe);
}
}
}