TCP Sunucusu   
Sunucu uygulaması genellikle bir defada birden fazla istemciye hizmet verir. Bu sebeple sunucu uygulama çeşitli istemcilerden bağlantı istemleri kabul edebilecek ve bu istemcilere eş zamanlı hizmet verebilecek durumda olmalıdır. Bunu yapabilmek için sunucu önce bilinen bir port numarasına bağlı bir serverPort (karşılama soketi) yaratır ve bağlantı istemlerini bekler:
ServerSocket welcomingSocket = new ServerSocket(serverPort);
Socket connectionSocket = welcomingSocket.accept();
accept() yöntemi kendisine yapılan her çağrıyı bir istemci sunucuyla bağlantı kurana kadar engeller ve ilgili istemciye iletilerin gönderilip istemciden ileti alınabileceği bir Socket elemanı geri döndürür. Aynı anda birden fazla istemciyi destekleyebilmek için accept() yöntemi ayrı süreçlerle çağrılabilir. Geri döndürülen her bir connectionSocket yeni bir süreç içinde kontrol edilmelidir. Bu çoklu süreçli sunucu uygulamasına karşılık gelmektedir.
connectionSocket elde edildikten sonra iki akış, toClient ve fromClient elde edilebilir ve bunlar önceki kısımda açıklandığı şekilde bir istemciden ileti almak ve istemciye ileti göndermek için kullanılabilir.