Giriş
Şu satırı dahil ederiz.
Şu satırı dahil ederiz.
import java.net.DatagramPacket;
Datagram'ın açıklaması şöyle. Datagram frame ve packet'ten farklı anlama geldiği için sınıfın işlevine tam olarak uyuyor.
Veri okumak için kullanılır. Şöyle yaparız.constructor - dataA self-contained, independent entity of data carrying sufficient information to be routed from the source to the destination computer without reliance on earlier exchanges between this source and destination computer and the transporting network.
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
constructor - data + ip + port
Veri göndermek için kullanılır.
ÖrnekDatagramPacket packet = new DatagramPacket(buf,buf.length,
InetAddress.getByName("192.168.1.5"), 4567);
Örnek
Şöyle yaparız.public String message = ...;
InetAddress group = InetAddress.getByName("228.5.6.7");
DatagramPacket hi = new DatagramPacket(message.getBytes(), message.length(),
group, 6789);
getAddress metodu
Okuma işleminden sonra paketin hangi adresten geldiğini bulmak için şöyle yaparız.
DatagramPacket packet =...
udpSocket.receive(receivePacket);
InetAddress ipAddress = packet.getAddress();
int port = packet.getPort();
getData metodu
Okunan veriyi döner. Şöyle yaparız.
Okuma işleminden sonra ne kadar veri okunduğunu belirtir.
DatagramPacket packet = new DatagramPacket(buf, buf.length);
udpSocket.receive(packet);
new String(packet.getData(), 0, packet.getLength()));
Şöyle de yapabiliriz.new String(packet.getData());
getLength metoduOkuma işleminden sonra ne kadar veri okunduğunu belirtir.
receivePacket.getLength()
getPort metodu
Okuma işleminden sonra paketin hangi porttan geldiğini bulmak için şöyle yaparız.
DatagramPacket packet =...
udpSocket.receive(receivePacket);
InetAddress ipAddress = packet.getAddress();
int port = packet.getPort();
setLength metodu
Okuma işleminden sonra nesnenin okuyabileceği veri büyüklüğünü tekrar atamak gerekir. Şöyle yaparız.
Okuma işleminden sonra nesnenin okuyabileceği veri büyüklüğünü tekrar atamak gerekir. Şöyle yaparız.
byte[] b = new byte[BUFFER_LENGTH];
DatagramPacket dgram = new DatagramPacket(b, b.length);
while(true) {
socket.receive(dgram); // blocks until a datagram is received
System.err.println("Received " + dgram.getLength() +
" bytes from " + dgram.getAddress());
dgram.setLength(b.length); // must reset length field!
}