Giriş
Şu satırı dahil ederiz.
Şu satırı dahil ederiz.
import java.net.InetAddress;
Bu sınıf IPv4 veya IPv6 adresini temsil eder. C# dilindeki karşılığı IPAddress sınıfıdır.InetAddress vs InetSocketAddress
Açıklaması şöyle
- An InetAddress corresponds to the Network Layer (Layer 3) and is basically an IP address.- A InetSocketAddress corresponds to the Transport Layer (Layer 4) and consists of an IP address and a port number.
Bu sınıf istemci socket açmak için kullanılır. Şöyle yaparız
int SERVERPORT = 4000;
String SERVER_IP = "192.168.8.112";
InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
Socket socket = new Socket(serverAddr, SERVERPORT);
Sunucu SocketBu sınıf sunucu socket açmak için kullanılır.
Örnek
Şöyle yaparız.
int port = 31_003;
ServerSocket serverSocket = ServerSocketFactory.getDefault()
.createServerSocket(port, 1, InetAddress.getLocalHost());
getAllByName metodu
İmzası şöyle
public static InetAddress[] getAllByName(String host)
getByName() kesinlikle kullanılmamalı. Bunun yerine getAllByName() kullanılmalı. Açıklaması şöyle
Avoid APIs that convert a hostname to a single IP address:- java.net.Socket(String,int)- java.net.InetSocketAddress(String,int)- java.net.InetAddress.html#getByName(String)
Örnek - İstemci Socket
Şöyle yaparız
Socket doConnect(String hostname, int port) throws IOException {
IOException exception = null;
for (InetAddress address : InetAddress.getAllByName(hostname)) {
try {
return new Socket(address, port);
} catch (IOException e) {
if (exception == null) {
exception = e;
} else {
exception.addSuppressed(e);
}
}
}
throw exception;
}
veya şöyle yaparız
Socket doConnect(String hostname, int port) throws IOException {
IOException exception = null;
for (InetAddress address : InetAddress.getAllByName(hostname)) {
try {
Socket s = new Socket();
s.connect(new InetSocketAddress(address, port));
return s;
} catch (IOException e) {
if (exception == null) {
exception = e;
} else {
exception.addSuppressed(e);
}
}
}
throw exception;
}
getAddress metodu
Örnek
Şöyle yaparız. Byte dizisi 192,168,1,20 gibi değerler içerir.
İmzası şöyle
byte[] octets = inetAddress().getAddress();
Örnek
Bir ağdaki tüm IP'leri dolaşmak için şöyle yaparız.byte[] ip = InetAddress.getLocalHost().getAddress();
for (int i = 0; i < 255; i++) {
ip[3] = (byte)i;
InetAddress address = InetAddress.getByAddress(ip);
if (address.isReachable(1000)) {
System.out.println(address.getHostAddress()+"can be pinged with Name"+
InetAddress.getByAddress(ip).getHostName() );
}
}
getByAddress metoduİmzası şöyle
public static InetAddress getByAddress(byte[] addr)
Örnek
Şöyle yaparız.
Şöyle yaparız.
getByName metodu
Şöyle yaparız.
InetAddress inetAddress = InetAddress.getByAddress(new byte[] {127,0,0,1}));
Örnek
Bu sınıf sunucu socket açmak için kullanılır. Şöyle yaparız.
int port=31003;
ServerSocket socket =
new ServerSocket(port,0, InetAddress.getByAddress(new byte[] {127,0,0,1}));
Örnek
int broadcast = ...;
byte[] quads = new byte[4];
for (int k = 0; k < 4; k++)
quads[k] = (byte) ((broadcast >> k * 8) & 0xFF);
InetAddress inetAddress = InetAddress.getByAddress(quads);
getByAddress metodu
İmzası şöyle
İmzası şöyle
public static InetAddress getByAddress(String host, byte[] addr)
Örnek ver
İmzası şöyle
public static InetAddress getByName(String host)
Örnek - IP
IP ile çalışabilir. Şöyle yaparız.
foo.example.com gibi bir çıktı verir.
getHostAddress metodu
Şöyle yaparız.
Örnek ver.
getLocalHost metodu
Örnek
InetAddress inetAddress = InetAddress.getByName("192.168.1.5");
Örnek - Sunucu İSmi
Gerekirse DNS sunucunu kullanır. Şöyle yaparız.String url = "http://reddit.com";
InetAddress inetAddress = InetAddress.getByName(address);
getCanonicalHostName metodufoo.example.com gibi bir çıktı verir.
getHostAddress metodu
Şöyle yaparız.
System.out.println("IP = " + inetAddress.getHostAddress());
getHostName metoduÖrnek ver.
getLocalHost metodu
Örnek
Şöyle yaparız. 192.168.1.2 gibi bir IP adresi döner.
isReachable metodu
Şöyle yaparız. Sanırım verilen adresi Ping'ler.
InetAddress localIP = InetAddress.getLocalHost();
Aslında şu kodla aynı
InetAddress.getByName("localhost")
getLoopbackAddress metodu
Açıklaması şöyle
To resolve a loopback address, prefer InetAddress.getLoopbackAddress() over hard-coding an IPv4 or IPv6 loopback address with InetAddress.getByName("127.0.0.1") or InetAddress.getByName("::1").
Şöyle yaparız. Sanırım verilen adresi Ping'ler.
String ip ="172.20.1.";
if(InetAddress.getByName(host).isReachable(1000)) {...]
Hiç yorum yok:
Yorum Gönder