Client ve server arasında text tabanlı socket communication kuran bir örnek proje. Bu örnekte önce client server'a selam veriyor sonra server client'ı selamlıyor. Client, server'ın yolladığı selamı alınca iletişim tamamlanmış oluyor. Bu yapı game ve chat gibi online işleyen yazılımlar için gerekli teknolojiyi gösteriyor. Selam yerine client server'a oyuncunun yaptığı hamleyi bildirir. Server da bu mesaj değerlendirilir ve karşılığında bir yanıt döner. Client bu son gelen mesajı değerlendirerek yolladığı komutun karşılığında server'ın ne tepki verdiğini öğrenir. Socket tabanlı network yazılımlarında kullanılan teknoloji bu örnekte anlatılanlardan farklı değildir. Mantık ise yazılımdan yazılıma değişmektle birlikte bu örnektekine benzerdir. Sadece hata kontrolleri profesyonel yazılımış bir programda olması gereken özellikler eklenir.
SocketCommunicator
Bu class bir Thread içerisinde socket iletişimi yapmaktadır. Bir socket'in OutputStream'ine yazma, InputStream'inden okuma gibi işlemleri yapmaktadır. Bununla bir server'ın bir client'la olan iletişimi gerçekleştirlmiş olur. Aslında bu iletişimi asıl yapan class'lar GreetingClient ve ClientHandler class'larıdır. GreetingClient client'ı temsil edier. ClientHandler da server'ın bir client'la konuşmasını sağlayan class'dır. Bu ikisini de socket communication'u yapan thread'ler olduğu için ortak kodu SocketCommunicator'a yazılmıştır.
Bu class client'ı temsil ediyor. Communication işlemlerinin çoğunu SocketCommunicator'tan devraldığı burada sadece alınan mesajın değerlendirilmesi ve mesaj gönderilmesi var. Ayrıca client application'u bu olduğu için main() methodu içeriyor. Kullancının standart input'tan girdiği mesajları server'a yolluyor. Server'dan gelen yanıtları da ekrana basıyor.
Bu class server'da her bir client'la iletişim kurma işlevini görüyor.Server kendisine bağlanan her client için bir ClientHandler yaratıryor ve aktifleştiriyor. Client'ın gönderdiği mesajları değerlendirmek ve yanıt vermek onun işi.
Bir port'ta kendisine bağlanan client'larla iletişim kurmaya yarayan class. Kendisine bağlanan client için bir ClientHandler yaratıyor ve client socket'i ona devrediyor. Ayrıca server application'unu çalıştırmak için bir main() methodu içeriyor.