Java ile Socket Programlama

Sümeyye Akay
ecuexblog
Published in
2 min readJun 1, 2020

Herkese merhaba :) Bu yazımda sizlerle soket programının mantığını ve örnek bir client- server arası mesajlaşma uygulaması yazacağız. Bu uygulama ayrıca fotoğraf ve dosya paylaşımı da yapıyor olacak.

Socket Nedir ?

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 adresidir. 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.

Socket Programlama

İstemci (Client) ve sunucu (Server) arasındaki bağlantının sağlanması için olan bir iletişim kanalı diyebiliriz. Yaşam döngüsünü basitçe tarif etmek gerekirse, sunucu önceden belirlenen portu dinler, istemci ise bu porta mesaj gönderir.

Client — Server

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.

Şimdi server-client arası mesajlaşma uygulamamıza başlayalım.

Projemizin çıktısı bu olacaktır.

Projeye başlamadan önce Swing ile JFrame yapısı kullanmayı biliyor olmanız size artı kazandıracaktır :)

Start Server butonuna basılınca program client ile haberleşmeye başlıyor ve yazılan porttan haberleşmeye hazır hale geliyor. İlk önce yeni bir socket oluşturmam gerekiyor.

Bu tanımlamayı yaptıktan sonra oluşturmuş olduğum arayüz tasarımına göre gerekli alanları kodluyoruz.

Server tarafında;

Clientta ise;

bağlantımızı oluşturmuş oluyoruz.

İlk yazımın uzun olmasını istemediğim için githuba yüklediğim proje dosyamda gerekli yerlerde yaptığım açıklamalar ile rahatlıkla anlayabilirsiniz.

Proje kodlarına ulaşmak isterseniz github linkimi paylaşıyorum :)

Sağlıkla Kalın.. :)

--

--