DatagramPacket etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
DatagramPacket etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

26 Nisan 2018 Perşembe

DatagramPacket Sınıfı

Giriş
Ş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.
A 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.
constructor - data
Veri okumak için kullanılır. Şöyle yaparız.
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
constructor - data + ip + port
Veri göndermek için kullanılır. 
Örnek
Şöyle yaparız.
DatagramPacket 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.
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 metodu
Okuma 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.
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!
}


4 Haziran 2016 Cumartesi

DatagramSocket Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.net.DatagramPacket;
import java.net.DatagramSocket;
Bu sınıflar beraner DatagramPacket nesnesi de kullanılır.

constructor - İstemci
Şöyle yaparız.
DatagramSocket  socket = new DatagramSocket();
constructor - Sunucu
Sunucu için şöyle yaparız.
DatagramSocket serverSocket = new DatagramSocket(8888);
close metodu
Şöyle yaparız.
socket.close();
receive metodu
DatagramPacket nesnesi belli bir bellek alanı ile yaratılır.
byte[] recvBuf = new byte[15000];
DatagramPacket packet = new DatagramPacket(recvBuf, recvBuf.length);
Gelen veriyi okumak için şöyle yaparız.
DatagramPacket packet = ...;
udpSocket.receive(packet);
send metodu
DatagramPacket nesnesi belli bir bellek alanı, IP adresi ve port numarası ile yaratılır.
byte[] sendData = ...;
DatagramPacket packet = new DatagramPacket(sendData, sendData.length, 
 InetAddress.getByName("255.255.255.255"), 8888);
Veriyi göndermek için şöyle yaparız.
DatagramPacket packet = ...;
udpSocket.send(packet);
setBroadcast metodu
Broadcast veri almak için şöyle yaparız.
udpSocket.setBroadcast(true);
setSoTimeout metodu
Şöyle yaparız
udpSocket.setSoTimeout(1000);
Bu çağrıdan sonra socket işlemleri timeout exception atar.
try {
  udpSocket.xxx();    
}
catch (SocketTimeoutException  e ){
}