Her müşterinin, her biri yeni bir iş parçacığı olan bir soketten bağlandığını anlıyorum, ancak verileri belirli bir istemci soketine nasıl gönderirim? Bu sorunu çözmek için ne yapmalıyım? Bağlantılı bir listede sunucusuna bağlanan tüm kullanıcıların kaydetmek ve bunu da her istemci bağlantısını geçebilirVerileri belirli Soket bağlantılarına nasıl gönderirim?
package server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Server {
public Server() throws IOException {
ServerSocket ss = new ServerSocket(1124);
ExecutorService executorService = Executors.newFixedThreadPool(100);
System.out.println("Server is running");
while (true) {
Socket s = ss.accept();
executorService.execute(new ConnectionHandler(s));
}
}
public static void main(String[] args) throws IOException {
new Server();
}
}
class ConnectionHandler implements Runnable {
Socket s;
public ConnectionHandler(Socket s) {
this.s = s;
}
@Override
public void run() {
try {
BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
} catch (IOException ex) {
Logger.getLogger(ConnectionHandler.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Eğer inputStream bir çıkış göndermek istediğiniz aynı soket olmalıdır emin misiniz? –
aslında, nasıl Soket (Müşteri bir) ve Soket (Müşteri 2) ayırt edersiniz? ... seni takip etmelidir Müşteriye Müşteri 2 iplik çalıştıran bir soket ... – IamTryingHard
veri göndermek nasıl bütün senin ConnectionHandler, bir Listeye ihtiyacınız var ve bunu kabul ettikten sonra ona bir bağlantı ekleyin. bu şekilde belirli bir müşteriye mesaj gönderebilirsiniz, ancak ConnectionHandler'ınızı değiştirmeniz gerekir, çünkü orada hiçbir şey yapmaz. – Reza