मैं थोड़ी देर के लिए यह कोशिश कर रहा हूं, और मैं चाहता हूं कि कई क्लाइंट एक साथ कई इनपुट प्राप्त करें।
एक समस्या है, मैं चाहता हूं कि सर्वर सभी ग्राहकों को "हाय" प्रिंट करे, यदि कोई ग्राहक 'print2all Hi' कहता है।
मुझे पता है कि इसे प्रिंट करने के लिए इसे कैसे संसाधित करना है, बस सभी ग्राहकों को प्रिंट करने के लिए समस्या है।मैंने सॉकेट के साथ एक जावा सर्वर बनाया है, बस सभी सॉकेट को प्रिंट कैसे करें?
यहां तक कि मेरे पास अब तक है।
सर्वर
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();
}
ग्राहक
Processor p = new Processor(); socket = new Socket("localhost",25565); out = new PrintWriter(socket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String fromServer;
String fromUser;
out.println("print2all Hi")
socket.close();
दोस्तों। आप एक स्टार्टर सर्वर के रूप में उपयोग करना चाहते हैं, मैं पूरी अनुमति = पी
मुझे लगता है कि नहीं है कि सॉकेट ताकि आप सॉकेट धागा सॉकेट मालिक से समवर्ती मुद्रण लग सकती है, धागा सुरक्षित हैं, हालांकि और एक प्रसारण। –
@ क्रिस्टोफबीओकाका: आप सही हैं, लेकिन ओपी में बहुत सरल समस्याएं प्रतीत होती हैं। हालांकि मैं थ्रेड-सुरक्षा के बारे में उल्लेख करूंगा, धन्यवाद! –
+1 यदि आप concurrency लाइब्रेरी से संग्रह का उपयोग करते हैं, तो आप सूची को बनाए रखने के लिए थ्रेड जोड़ सकते हैं और आखिरकार सॉकेट को हटा सकते हैं। ऐसा लगता है कि कनेक्शन के हैंडलर को जोड़ना और निकालना अधिक उपयोगी है क्योंकि आप कनेक्शन की स्थिति अच्छी तरह से प्राप्त कर सकते हैं। –