Android Socket Programlama

Güncelleme tarihi: 1 May 2021


Görsel Referansı


Socket programlama aynı ağdaki iki cihazın birbiriyle haberleşmesini sağlamanın bir yoludur. Biri clienttaki, biri serverdaki olmak üzere iki socket haberleşir.


Bir socketin adresi IP ve porttan ibarettir. Server uygulaması, tanımlı port üzerinden clientları dinlemeye başlar. Client ise serverın IP'si ve açtığı port üzerinden bağlantı kurar. Daha sonra iletişim çift yönlü olarak devam edebilir.



Örnek bir server socket adresi 192.168.1.10:9876


Socket programlama IoT uygulamalarında sıkça tercih edilen bir yöntemdir. Cihazlar ağ üzerinde haberleşirler. İletişim TCP/IP protokolü üzerinden ilerlediği için environment bağımsızdır. Yani Android, bir PLC ile; Arduino, bir Linux makine ile haberleşebilir.


Android'de socket ile veri gönderme/okuma işlemleri network işi olduğu için UI/Main thread'de yapılmamalıdır.


Android uygulamasının server olduğu TCP protokolünü kullanan bir senaryoya bakalım:

  • Manifest dosyasına izinleri ekliyoruz

  • Uygulamanın arka planda ve uzun süreli çalışması, Android tarafından kill edilmesini istemediğimiz için foreground service oluşturalım.

  • Foreground service ayaklandığında, yani onCreate'te, socket işlemleri için yeni bir thread oluşturalım, çünkü hala main thread'deyiz.

  • Foregorund service notification ayarlarını ekleyelim.

  • Oluşturduğumuz threadde socketimizi port numarası ile tanımladık, şimdi clientları dinlemeye başlayabiliriz.

  • Her yeni client bağlantısı için yeni bir thread oluşturuyoruz


  • Bağlı clienttan gelen mesajı dinleyip cevap olarak "Hello Client" mesajını dönüyoruz


  • Manifest dosyasında service'imizi tanıtalım

  • Service'i launcher activity'den başlatalım