Örnek

İstemci ve Sunucu Arasında Sürekli Açık Kalan Socket Örneği

Java'da istemci ve sunucu arasında sürekli açık kalacak bir socket yaratılıp, o socket üzerinde veri alış verişi yapılabilir .
Aşağıdaki sınıf bir client socket'i ile input ve output stream açmaktadır. Veri geldiği sürece inputstream'den okur ve outputstrem'e yazar :
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class RequestHandler extends Thread{
	
	private Socket socket;
	
	public RequestHandler(Socket socket) {
		this.socket=socket;
	}
	
	@Override
	public void run() {
		
		try {
			
		    BufferedReader input = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
		    PrintStream output = new PrintStream(socket.getOutputStream());
			
			while(true) {
				
				String message = input.readLine();
				
				if(message!=null) {
					System.out.println("Client message: " + message);
					output.println("Hello Client");				
				}
				
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
}
Bir portu dinleyen ve yeni bir istek geldiğinde bir socket ve RequestHandler yaratıp başlatan sınıf aşağıdaki gibidir :
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class PingServer extends Thread {
	private ServerSocket serverSocket = null;
	public TypeBPingServer(int port) throws IOException {
		serverSocket = new ServerSocket(port);
	}
	@Override
	public void run() {
		while (true) {
			try {
				System.out.println("wait...");
				Socket socket = serverSocket.accept();
				
				System.out.println("socket is accepted");
				
				RequestHander requestHandler=new RequestHandler(socket);
				requestHandler.start();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}
Yeni bir socket açıldığında RequestHandler yaratılır ve başlatılır. Artık o socket üzerinde veri alış verişini RequestHandler sınıfı yapar.
Sunucu uygulaması aşağıdaki gibi yapılır ve çalıştırılır :
import java.io.IOException;
public class PingServerApplication {
	
	public satic void main(String[] args) throws IOException {
		
		int port=Integer.parseInt(args[0]);
		
		PingServer pingServer=new PingServer(port);
		pingServer.start();
		
	}
}
Uygulama sadece bir portu dinleyen PingServer'ı çalıştırır.
Şimdi kullanıcı mesaj girdiği sürece sunucu ile veri alış verişi yapacak olan istemciyi yaratabiliriz. Kullanıcı quit yazdığında socket kapatılır ve uygulamadan çıkılır.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class PingClientApplication {
	public static void main(String[] args) throws UnknownHostException, IOException {
		Socket s = new Socket("localhost", 9091);
		
		Scanner scanner = new Scanner(System.in);
		
		while(!scanner.nextLine().equals("quit")) {
			
			PrintStream output = new PrintStream(s.getOutputStream());
			output.println("Hello Server");
			BufferedReader input = new BufferedReader(
new InputStreamReader(s.getInputStream()));
			
			String response = input.readLine();
			
			System.out.println("response : "+response);
			
		}
		
		scanner.close();
		
		s.close();
	}
}
İstemci uygulaması 9091 portunda çalışan sunucu uygulamasına socket açar. Kullanıcı quit yazana kadar girdiği mesajlar sunucuya gönderilir.
Önce sunucu çalıştırılır. Sunucu çalıştırıldığında ekranda wait .. yazısı gözükür ve bir istemcinin socket açmasını bekler.
İstemci çalıştırıp, kullanıcı herhangi bir şey girdiğinde, örneğin a girsin, aşağıdaki gibi bir çıktı oluşur :
wait...
socket is accepted
wait...
Client message: Hello Server
İstemci uygulamasındaki çıktı ise :
a
response : Hello Client

Kullanıcı bundan sonra quit dışında girildiği her şey de istemci veriyi sunucuya gönderir, sunucu da Hello Client cevabını verir.
zafer.teker , 26.06.2026

Bu Sayfayı Paylaş:

Fibiler Üyelerinin Yorumları


Tüm üyeler içeriklere yorum ekleyerek katkıda bulunabilir : Yorum Gir



Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir