Yazılarımız

Veri Akademi

JAVA SOCKET PROGRAMLAMA

Java socket programlamadan önce “socket” kavramına bir göz atalım. Socket denildiğinde aklımızda bilgisayar kasalarımızda ki bir donanımsal parça canlanıyor. Fakat socket bilgisayarın ağ üzerinden başka bilgisayarlar ile haberleşmesini sağlayan bir yapıdır. Ama bunun gerçekleşmesi için bazı adreslere ihtiyaç duyuyoruz. Bunlardan bir tanesi ise bilgisayarımızın IP adresi.

IP adresi hangi bilgisayar ile haberleşeceğimizi belirlememize yarar. Haberleşeceğimiz bilgisayara ulaştığımızda, hangi program sayesinde iletişime geçeceğimizi belirtmemiz gerekiyor. Tam burada da bilgisayarımızın portları devreye giriyor.

Java Socket Programlama

Bu demek oluyor ki; iki bilgisayar IP adresi ve Port sayesinde birbirleriyle haberleşiyor. Socket dediğimiz yapı ise bahsettiğimiz IP adresi ve Port ikilisinden oluşuyor. Yani socket herkesin aklındaki, zihne kazınmış olan donanımsal parça değil; IP adresi ve Port numaralarından oluşan bir yapıdır.

Bilgisayarımız üzerinden birden çok socket vardır. Her socket tabanlı program için bilgisayarımızda farklı portlar mevcuttur. Örnek verecek olursak FTP Sunucuları 21. Port, TELNET Sunucuları ise 23. Portta çalışır.

Java Socket Programlama

Socketi kısaca anlattık, şimdi ise Socket Programlamaya geçebiliriz. Bir program örneğini sizlere sunacağız. Göstereceğim program, clientin servera ilettiği sayıları server tarafından karesi alınıp tekrardan cliente iletmesinden ibaret. Peki, Client ve Server nedir diye soracak olursanız, bu iki terimi de şöyle açıklayalım;

Client , socket programlarda hizmet isteyen bir işlemcidir. İstediğinde servera bağlanıp istekte bulunur ve dönen cevabı alır ve yine istediğinde bağlantıyı kesebilir.

Server ise, socket programlarda hizmet veren sunucudur. Client servera bağlanmak istediğinde, bağlanabilmesi için serverın sürekli açık olup, Clientin bağlanacağı portu izlemesi gerekiyor.

Clientin servera bağlanabilmesi için serverda açılan portu dinlemesi gerekmektedir. Bu yüzden ilk olarak server classını çalıştırmamız lazım.

Projenin kodlarını inceleyecek olursak;

Client Kodları:

Java Socket Programlama

“socket=new Socket(“localhost”,7555)” olarak yazılmasının sebebi ise programın localde çalışıyor olmasıdır. Fakat local yazmak yerine 170.0.0.1 de yazılabilir. Bu kısma bağlanılmak istenilen IP adresini yazabilirsiniz.

Java Socket Programlama

Servera veri gönderdiğimiz komut ise “out.println(değer);” kodudur.

Server Kodları:

Java Socket Programlama

Server, 7755 portunu Clientin bağlanması için dinlemekte. Port açılırken dikkat edilmesi gereken önemli noktalardan biriside, Portun 1 ile 1024 arasında açılmamasıdır. Nedeni ise bu portlar çok özel portlardır ve root tarafından kullanılır. Eğer bu portlardan birini kullanmaya çalışırsak “bind permission” hatası alırız.

Java Socket Programlama

“clientGelen=in.readline();” kodu istemciden gelen veriyi okur ve tanımladığımız “clientGelen” değişkenine aktarır. “out.println(sayı*sayı);” kodu ise istemcinin ilettiği sayının karesini alıp tekrardan istemciye göndermeye olanak sağlıyor.

Programın ekran çıktıları ise tam olarak bu şekildedir.

Client:

Java Socket Programlama

Server:

Java Socket Programlama

Daha detaylı Java Eğitimleri için Java Kursuna katılabilirsiniz.

PAYLAŞ

 VERİ AKADEMİ