Я реализую пример, когда сервер прослушивает любые активные клиенты в сети.
Я использую сокеты дейтаграмм для сервера, чтобы выполнить многоадресную рассылку, и клиенты отвечают на сервер.
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));
}
}
и на стороне клиента:
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();
}
}
}
В приведенном выше примере клиент должен знать серверIP apriori (жесткий код).Как я могу изменить код на стороне сервера так, чтобы сервер отправлял свой IP клиенту, а клиент отвечал на него?
Мне удалось сделать это с помощью сокетов, но возможно ли это с помощью сокетов дейтаграмм?
Спасибо!