I’m implementing the example where a server listens for any active clients in the network.
I’m using Datagram sockets for the server to do the multicast and clients to respon to the server.
public void run() {
try {
byte[] recvBuf = new byte[15000];
DatagramPacket packet = new DatagramPacket(recvBuf, recvBuf.length);
DatagramSocket dSock = new DatagramSocket(4445);
dSock.receive(packet);
int byteCount = packet.getLength();
ByteArrayInputStream byteStream = new ByteArrayInputStream(recvBuf);
ObjectInputStream is = new ObjectInputStream(new BufferedInputStream(byteStream));
}
}
and on the client’s side:
public void run() {
{
ObjectOutputStream os = null;
try {
InetAddress address = InetAddress.getByName("Server's IP");//Note!
ByteArrayOutputStream byteStream = new ByteArrayOutputStream(15000);
os = new ObjectOutputStream(new BufferedOutputStream(byteStream));
os.flush();
os.flush();
byte[] sendBuf = byteStream.toByteArray();
DatagramPacket packet = new DatagramPacket(sendBuf, sendBuf.length, address, 4445);
int byteCount = packet.getLength();
}
}
}
In the above Eg, the Client has to know the server’s IP apriori(hardcode). How can I modify the code on the server’s side so that the server sends it’s IP to the client and client responds to it?
I was able to do this using sockets but is it possible using datagram sockets?
Thanks!
You could use DatgramPacket.getAddress() and reply to the sender