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.
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.
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ı:
“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.
Servera veri gönderdiğimiz komut ise “out.println(değer);” kodudur.
Server Kodları:
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.
“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:
Server:
Daha detaylı Java Eğitimleri için Java Kursuna katılabilirsiniz.