Bunu bir süredir deniyorum ve birden çok istemcinin aynı anda birden fazla giriş yapmasını istiyorum.
Bir sorun varsa, bir istemcinin 'print2all Hi' yazması durumunda sunucunun tüm istemcilere "Merhaba" yazmasını istiyorum.
Yazdırmak için nasıl işlediğini biliyorum, sadece TÜM istemcilere yazdırmak sorun.Soketli bir Java sunucusu oluşturdum, sadece TÜMÜ yuvalara nasıl yazdırıyorsunuz?
Şimdiye kadar sahip olduğum şeyler.
Sunucu
try{
try{
server = new ServerSocket(25565);
} catch (Exception e){
e.printStackTrace();
}
while (isListening){
new SocketThread(server.accept()).start();
}
server.close();
} catch (Exception e){
e.printStackTrace();
}
SocketThread
try {
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String inputLine, outputLine;
Processor kkp = new Processor();
out.println("Hi!");
while ((inputLine = in.readLine()) != null) {
outputLine = kkp.Proccess(inputLine,this.socket);
out.println(outputLine);
}
out.close();
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
Müşteri
Processor p = new Processor(); socket = new Socket("localhost",25565); out = new PrintWriter(socket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
Guys. Eğer bir marş sunucusu olarak bu kullanmak istiyorsanız, hepinizin bağlı istemciler takip etmek gerek tam izni = P
ve yayın yapan biri. –
@ChristopheBiocca: Haklısınız, ancak OP'in çok daha basit sorunları var gibi görünüyor. Ancak iplik güvenliği hakkında konuşacağım, teşekkürler! –
+1 Eşzamanlılık kütüphanesinden bir koleksiyon kullanırsanız, listeyi korumak için parçacığı ekleyebilir ve sonunda soketi çıkartabilirsiniz. Bağlantıların durumunu iyi şekilde alabileceğiniz için bağlantı işleyicisinin eklenmesi ve çıkarılması daha yararlıdır. –