Burak IŞIKLI :))

Client-Server(İstemci-Sunucu) Programlama-2

Posted in Java by Burak IŞIKLI on 11 Haziran 2009

UDP

Bu protokolde iletişimde güvenlik önemli değildir. UDP’nin en önemli özelliği ise Datagram kullanılmasıdır. Bağlantı yaparken DatagramSocket ve DatagramPacket kullanılmaktadır.


package edu.burakkk.cliser.udp;

import java.net.*;
import java.io.*;

public class Server {
 public static void main(String args[]) {
 DatagramSocket aSocket = null;
 try {
 aSocket = new DatagramSocket(6789);
 // create socket at agreed port
 byte[] buffer = new byte[1000];
 while (true) {
 DatagramPacket request = new DatagramPacket(buffer,
 buffer.length);
 aSocket.receive(request);
 DatagramPacket reply = new DatagramPacket(request.getData(),
 request.getLength(), request.getAddress(), request
 .getPort());
 aSocket.send(reply);
 }
 } catch (SocketException e) {
 System.out.println("Socket: " + e.getMessage());
 } catch (IOException e) {
 System.out.println("IO: " + e.getMessage());
 } finally {
 if (aSocket != null)
 aSocket.close();
 }
 }
}

Sunucu sınıfımızda aynen TCP protokolünde olduğu gibi uygun olan portu açıyoruz ve yayına başlıyoruz.


 package edu.burakkk.cliser.udp;

import java.net.*;
import java.io.*;

public class Client {
 public static void main(String args[]) {
 // args give message contents and destination hostname
 DatagramSocket aSocket = null;
 try {
 aSocket = new DatagramSocket();
 byte[] m = args[0].getBytes();
 InetAddress aHost = InetAddress.getByName(args[1]);
 int serverPort = 6789;
 DatagramPacket request = new DatagramPacket(m, args[0].length(),
 aHost, serverPort);
 aSocket.send(request);
 byte[] buffer = new byte[1000];
 DatagramPacket reply = new DatagramPacket(buffer, buffer.length);
 aSocket.receive(reply);
 System.out.println("Reply: " + new String(reply.getData()));
 } catch (SocketException e) {
 System.out.println("Socket: " + e.getMessage());
 } catch (IOException e) {
 System.out.println("IO: " + e.getMessage());
 } finally {
 if (aSocket != null)
 aSocket.close();
 }
 }
}

Client ise tcp’den farklı olarak argüman olarak bağlanacağımız adresi veriyoruz. Yani süreci(process) çalıştırırken arg olarak ip adresini veriyoruz.

MULTICAST

UDP’ye benzer olarak multicast olarak yayın yapabiliriz. Ancak bu bir protokol değildir. UDP yöntemini kullanmaktadır ancak burada önemli olan bir tek istemci değil birden fazla istemci(yani bir grup)’tur. Yani gruba bağlı yayın yapılmaktadır.

package edu.burakkk.cliser.multicast;

import java.net.*;
import java.io.*;

public class Multicastpeer {
 public static void main(String args[]) {
 // args give message contents and destination multicast group (e.g.
 // "228.5.6.7")
 MulticastSocket s = null;
 try {
 InetAddress group = InetAddress.getByName(args[1]);
 s = new MulticastSocket(6789);
 s.joinGroup(group);
 byte[] m = args[0].getBytes();
 DatagramPacket messageOut = new DatagramPacket(m, m.length, group,
 6789);
 s.send(messageOut);
 byte[] buffer = new byte[1000];
 for (int i = 0; i < 3; i++) { // get messages from others in group
 DatagramPacket messageIn = new DatagramPacket(buffer,
 buffer.length);
 s.receive(messageIn);
 System.out.println("Received:"
 + new String(messageIn.getData()));
 }
 s.leaveGroup(group);
 } catch (SocketException e) {
 System.out.println("Socket: " + e.getMessage());
 } catch (IOException e) {
 System.out.println("IO: " + e.getMessage());
 } finally {
 if (s != null)
 s.close();
 }
 }
}
<pre>

Bir Yanıt

Subscribe to comments with RSS.

  1. Ayro said, on 17 Haziran 2009 at 16:44

    teşekkürler..


Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: