JAVA-SOKET İLE BASİT BİR İSTEMCİ-SUNUCU UYGULAMASI

  Bu uygulamamızda Java'nın soket nimetinden faydalanacağız.Localhost üzerinden istemci-sunucu mimarisini kullanarak basit bir uygulama yapacağız.İstemciden alınan sayının(request),server'da faktöriyel'ini alıp sayıyı istemciye geri (response) döndüreceğiz.İlk olarak istemci tarafını kodluyoruz.

client.java
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;
public class Client {
    public static void main(String [] args) throws IOException{
        int number,temp;
        Scanner sc1=new Scanner(System.in);
        Socket s=new Socket("127.0.0.1",496);
        Scanner sc2=new Scanner(s.getInputStream());
        System.out.println("Faktöriyeli alınacak sayi : ");
        number=sc1.nextInt();
        PrintStream ps=new PrintStream(s.getOutputStream());
        ps.println(number);
        temp=sc2.nextInt();
        System.out.println(number+"! ="+temp);
    }
}

Soket sınıfından nesnemizi türettik.Bu sınıfımızın yapılandırıcısına 2 parametre girdik.İlki cihazımın ip adresi(şimdilik localhost).İkincisi de iletişimin hangi port üzerinden olacağı.sc1 istemciden alınacak sayi.sc2 ise sunucuya konsol'a yazılacak değeri okuyup sunucu ile iletişime geçecek.InputStream ve OutputStream hem istemci hemde sunucuda yazılmalı.Çünkü haberleşme iki taraflı oluyor.İstemci bir istekte bulunuyor,sunucu gelen isteğe cevap veriyor.İstemci de gelen cevabı alıyor.

Şimdi de sunucu tarafını kodlayalım..


server.java

import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class Server {
        public static int factorial(int num){
             if (num == 1)
                return 1;
                    return num*factorial(num-1);
          }
    public static void main (String [] args) throws IOException{
        int number,temp;
        ServerSocket s1=new ServerSocket(496);
        Socket ss=s1.accept();
        Scanner sc=new Scanner(ss.getInputStream());
        number=sc.nextInt();
        temp=factorial(number);
        PrintStream p=new PrintStream(ss.getOutputStream());
        p.println(temp);
    }
}


accept() fonksiyonu ile server 496 nolu soketi dinlemeye alıyor.Sonra getInputStream ile değeri okuyor. number=sc.nextInt(); gelen değerin integer tipinde olduğunu söylüyor.Daha sonra yazdığımız recursive fonksiyona parametre olarak yolluyoruz.Bize dönen değeri temp değişkenine atıp bu değeri istemciye yolluyoruz.Benzer şekilde swing,awt kütüphanelerini kullanarak basit chat,karşılıklı online oyunlar programlayabilirsiniz...

İYİ ÇALIŞMALAR




Hiç yorum yok:

Yorum Gönder

Spring Boot Uygulamasını Heroku üzerinde Deploy Etme

Bu yazımızda sizlere spring boot ile yazılmış basit bir Rest api'nin heroku üzerinde nasıl deploy edebileceğimizi göstereceğim. Önce ...