Я пытаюсь ознакомиться с системой дейтаграмм в java для проекта, в настоящее время мы работаем только с пакетами UDP.
Чтобы отправить сообщение, мы установили IP-адрес назначения в DatagramPacket.
/*
* The fields of this class are package-private since
* DatagramSocketImpl classes needs to access them.
*/
byte[] buf;
int offset;
int length;
int bufLength;
InetAddress address;
int port;
При этом поле «адрес» становится адресом назначения, но когда мы получаем пакет, это поле соответствует источнику.
Я думаю, что сам объект не отправляется напо сети, но его информация есть.
Я кратко проверил исходный код DatagramPacket и DatagramSocket, но, похоже, не нашел ни одного экземпляра, где было изменено это поле "address".
Я предполагаю, что только класс DatagramPacketхранит один IP-адрес, потому что другой является IP-адресом машины, и когда сообщение отправляется по сети, UDP содержит оба IP-адреса, которые затем обрабатываются DatagramSocket.receive () и помещают отсутствующий (исходный) адрес в дейтаграмму.Это правильно?