Mehmet Ethem SULAN :: Java Programlama Dili :: DatagramSocket ve DatagramPacket Sınıfları Kullanılarak Gönderilen Paketin Kaynak Adresini Sunucuda Değiştiren Java Network Uygulaması

Istemci.java     hostname=”Hedef bilgisayarın IP adresi” veya localhost yazılabilir.

package www.ethemsulan.com;
import java.net.*;
import java.io.*;
public class Istemci {
public static void main(String[] args) {
   String hostname;
//Bu port uzerinden haberlesecekler
   int port = 9999;
   if (args.length > 0) {
     hostname = args[0];
     try {
 port = Integer.parseInt(args[1]);
      }
      catch (Exception ex) {
      }
    }
  else {
//Asagidaki 192.168.2.33 gidilecek bilgisayarin ip adresidir.
//Hangi bilgisayarla iletisime gecilmek istiyorsak onun ip 
//adresini hostname yazmamiz lazim.localhost ta yazilabilir.
//Sunucu.java sınıfının bulunduğu bilgisaayrın ip adresidir.
//Sunucu bir bilgisayardan ve istemci de diğer bilgisayarda
//tutulur.Önce sunucu çalıştırılır ve sonra istemci 
//ve consoleden değerler yazdıkça sunucuya gider.
      hostname ="192.168.2.33";
    }
    try {
InetAddress server = InetAddress.getByName(hostname);
//Consola girilen değerleri okur
BufferedReader kulGirdi= new 
  BufferedReader(new InputStreamReader(System.in));
DatagramSocket soketimiz = new DatagramSocket();
DatagramPacket ciktimiz;   
  while (true) {
   String satirOku = kulGirdi.readLine();
   if (satirOku.equals(".")) break;
   byte[] data = satirOku.getBytes();
ciktimiz= new DatagramPacket(data, data.length, server, port);
//Consoldan deger okuyup 192.168.2.33 ip adresine sahip 
//bilgisayar gonderir.Yani gonderilen bilgisayar sunucudur.
      soketimiz.send(ciktimiz);
      }  
    } 
    catch (UnknownHostException uhex) {
      System.err.println(uhex);
    }
    catch (SocketException sex) {
      System.err.println(sex);
    }
    catch (IOException ioex) {
      System.err.println(ioex);
    }
  }  
}

Orj kod:http://www.ethemsulan.pastebin.com/redThJTv

Sunucu.java

Eğer alınan paketin ip kaynak adresinin farklı göstermesini istiyorsak a ve b daki satırların yorumlarını kaldırın.Hangi ip ile görünmesini istiyorsanız onu yazın.Ben ethemsulan.com yazdım.

package www.ethemsulan.com;
import java.net.*;
import java.io.*;
public class Sunucu {
public final static int MAX_PACKET_SIZE = 65507;
 public static void main(String[] args) {
int port = 9999;
byte[] buffer = new byte[MAX_PACKET_SIZE];
try {
  port = Integer.parseInt(args[0]);
  }
  catch (Exception ex) {
  }
try {
//Bu örnekte UDP kullanılmıştır.
DatagramSocket server = new DatagramSocket(port);
DatagramPacket paket = 
	 new DatagramPacket(buffer, buffer.length);
  while (true) {
     try {
    server.receive(paket);
//Eger kaynak adresin degistirmesini istiyorsaniz asagidaki iki
//yorum satirini kaldirin.
//a-->Inet4Address adres=(Inet4Address) Inet4Address.getByName("ethemsulan.com");
//b--> paket.setAddress(adres);
String gonderen = new String(paket.getData(), 0, paket.getLength());
//paket.getAddress() kaynak bilgisayarin ip adresini donderir.
//Paketin geldigi kaynak adresi değiştirmek için a ve b yorum
//satirlarini kaldirin.Eğer a ve b yorum satırları kaldırılırsa sanki paket
//ethemsulan.com dan gelmiş gibi görünür
System.out.println(paket.getAddress()+ 
   " adresinden gelen paketteki veri--> " + gonderen);
          paket.setLength(buffer.length);
        }
        catch (IOException ex) {
          System.err.println(ex);
        }
       }
    } 
    catch (SocketException  ex) {
      System.err.println(ex);
    } 
  }
}

Orj kod:http://www.ethemsulan.pastebin.com/mWzUrBxR

Write a Comment

Let me know what you think?