Java Networking: Difference between revisions
Line 84: | Line 84: | ||
{{External|https://docs.oracle.com/javase/8/docs/api/java/net/DatagramSocket.html}} | {{External|https://docs.oracle.com/javase/8/docs/api/java/net/DatagramSocket.html}} | ||
===Binding a DatagramSocket=== | |||
==MulticastSocket== | |||
{{External|https://docs.oracle.com/javase/8/docs/api/java/net/MulticastSocket.html}} | {{External|https://docs.oracle.com/javase/8/docs/api/java/net/MulticastSocket.html}} | ||
A <tt>MulticastSocket</tt> is a | A <tt>MulticastSocket</tt> is a [[#DatagramSocket|DatagramSocket]], the class inherits from <tt>DatagramSocket</tt>. |
Revision as of 17:03, 16 March 2017
Internal
Concepts
InetAddress
This class represents an Internet Protocol (IP) address. Its subclasses represent either 32 bit IPv4 addresses (Inet4Address) or an 128 bit IPv6 addresses (Inet6Address). The instances incapsulate the numeric address (4 bytes or 16 bytes) and possibly a host name, but not netmask information. The class has accessors that characterize the IP address (isMulticastAddress() etc.).
Inet4Address
Inet6Address
SocketAddress
Is an immutable representation of a socket address. It does not have any association with any protocol. The values are used by sockets for binding, connecting or as returned values.
InetSocketAddress
Represents an IP socket address (IP address + port or hostname + port).
NetworkInterface
The JVM representation of a network interface available on the host. It is identified by a name, the same name returned by ifconfig -a or ip addr, if the host runs a Unix system. The NetworkInterface instance can be used to get the list of addresses associated with the interface and other characteristics of the interface.
Comparison between the information visible from JVM and directly from the system with ip addr:
1. lo <LOOPBACK, UP> mtu 65536 hardware address: N/A interface addresses: 0:0:0:0:0:0:0:1%lo/128, 127.0.0.1/8 2. eth0 <UP, MULTICAST> mtu 1500 hardware address: 08:00:27:2c:e2:de interface addresses: fe80:0:0:0:a00:27ff:fe2c:e2de%eth0/64, 10.0.2.15/24 3. eth1 <UP, MULTICAST> mtu 1500 hardware address: 08:00:27:95:52:f2 interface addresses: fe80:0:0:0:a00:27ff:fe95:52f2%eth1/64, 172.20.1.11/16
ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:2c:e2:de brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0 valid_lft 84095sec preferred_lft 84095sec inet6 fe80::a00:27ff:fe2c:e2de/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:95:52:f2 brd ff:ff:ff:ff:ff:ff inet 172.20.1.11/16 brd 172.20.255.255 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe95:52f2/64 scope link valid_lft forever preferred_lft forever
NetworkInterface code in GitHub:
InterfaceAddress
Represents a NetworkInterface address. For an IPv4 address, It consists of an IP address, a subnet mask and a broadcast address. For an IPv6 address, it consists in an IP address and a network prefix length.
DatagramSocket
Binding a DatagramSocket
MulticastSocket
A MulticastSocket is a DatagramSocket, the class inherits from DatagramSocket.