Java Socket Modeli 1980 yılında BSD(UNIX) Soketi baz alınarak geliştirilmiştir.
Internet Protokolü paketlerden oluşur ve bu paketler bağımsız olarak bir noktadan bir noktaya iletilerek haberleşme sağlanır. Herbir paketin boyutu 65535 byte ile sınırlıdır. Bunun 20 byte kadarı paket başlığı olduğu için kullanıcıya 65515 byte kalmaktadır.
Java Networkde bilmemiz gereken diğer bilgi ise porttur. IP paketinin 16 bit kadarı port numarasını bildirir. Yani siz bir bilgisayara bilgi gönderirken o bilgisayarın portunu da bildirirsiniz.
Biz burada
- UDP (User Datagram Protocol)
- TCP (Transmission Control Protocol)
networklerini inceleyeceğiz.
UDP (User Datagram Protocol)
UDP çok hızlı veri aktarımı sağlar ama gönderilen paketin gönderilme garantisini bize sağlamaz. Yani paket gönderilir fakat paketin alındığına dair bir geri bildirim gönderilmez. Bunu posta servisine benzetebiliriz.
UDP Server
import java.net.DatagramSocket; import java.net.DatagramPacket; import java.net.InetAddress; public class UDPServer { public UDPServer() { try { DatagramSocket socket = new DatagramSocket(4444); byte[] buffer = new byte[1024]; DatagramPacket packet = null; packet=new DatagramPacket(buffer, buffer.length); socket.receive(packet); InetAddress remoteHost = packet.getAddress(); int remotePort = packet.getPort(); byte[] data = packet.getData(); String str = new String(data); System.out.println(remoteHost + ":" + remotePort); System.out.println("Data: " + str); } catch(Exception exc) { exc.printStackTrace(); } } public static void main(String[] args) { new UDPServer(); } }
UDP Client
import java.net.DatagramPacket; import java.net.InetAddress; import java.net.DatagramSocket; public class UDPClient { public UDPClient() { byte[] buffer = new byte[1024]; try { InetAddress host = InetAddress.getByName("localhost"); DatagramPacket packet = null; packet=new DatagramPacket(buffer,buffer.length,host,4444); String str = new String("Mesajım"); packet.setData(str.getBytes()); DatagramSocket socket = new DatagramSocket(); socket.send(packet); } catch(Exception exc) { exc.printStackTrace(); } } public static void main(String[] args) { new UDPClient(); } }
TCP (Transmission Control Protocol)
TCP’de UDP’den farklı olarak her gönderilen paket için bir geri bildirim gönderilir. Böylece paketin alıcıya ulaşığı bilgisi kesinleşir. Bu geri bildirimler nedeniyle UDP kadar hızlı olmasa da bize güvenilir bir network sunar. Çünkü her paketin alıcıya ulaştığı garantisini verir.
TCP Server
import java.net.ServerSocket; import java.net.Socket; import java.io.*; public class TCPServer { public TCPServer() { ServerSocket server = null; try { server = new ServerSocket(4445); Socket socket = server.accept(); InputStreamReader sreader = null; sreader = new InputStreamReader(socket.getInputStream()); BufferedReader in = null; in = new BufferedReader(sreader); OutputStreamWriter out = null; out = new OutputStreamWriter(socket.getOutputStream()); System.out.println("Data: " + in.readLine()); } catch(Exception exc) { exc.printStackTrace(); } finally { try { if(server != null) server.close(); } catch(Exception exc) {} } } public static void main(String[] args) { new TCPServer(); } }
TCP Client
import java.net.Socket; import java.io.*; public class TCPClient { public TCPClient() { Socket client = null; try { client = new Socket("localhost", 4445); InputStreamReader sreader = null; sreader = new InputStreamReader(client.getInputStream()); BufferedReader in = null; in=new BufferedReader(sreader); OutputStreamWriter out = null; out=new OutputStreamWriter(client.getOutputStream()); out.write("Mesajım"); out.flush(); } catch(Exception exc) { exc.printStackTrace(); } finally { try { if(client != null) client.close(); } catch(Exception exc) {} } } public static void main(String[] args) { new TCPClient(); } }

Son Yorumlar