इसलिए मैंने जावा में एक मूल क्लाइंट-सर्वर प्रोग्राम बनाया। यह इस तरह से शुरू होती है:जावा सॉकेट: एक सर्वर और एकाधिक ग्राहक
- ग्राहक सर्वर को
- सर्वर क्लाइंट का नाम
- क्लाइंट का नाम के साथ प्रतिक्रिया के लिए पूछता है
- सर्वर को बधाई दी क्लाइंट
- इस के बाद से जोड़ता है, ग्राहक बोलते हैं और सर्वर को दोहराता है शब्द
मुझे यह this tutorial का उपयोग करके बहुत अधिक परेशानी के बिना काम करने के लिए मिला। जब भी मैं एकाधिक ग्राहकों को पेश करने का प्रयास करता हूं तो समस्या आती है। मैंने सोचा कि यह काम करेगा क्योंकि मैं एकाधिक धागे का उपयोग कर रहा हूं, हालांकि, दूसरे क्लाइंट बस पहले क्लाइंट छोड़ने तक लटकते हैं और फिर यह काम शुरू करता है (सर्वर दूसरे क्लाइंट से इनपुट स्वीकार करता है, लेकिन यह प्रतिक्रिया नहीं देता है कुछ भी क्लाइंट छोड़ने तक कुछ भी)।
यहाँ है कोड मैं उपयोग कर रहा हूँ:
import java.net.*;
import java.io.*;
public class Server extends Thread {
private ServerSocket listener;
public Server(int port) throws IOException {
listener = new ServerSocket(port);
}
public void run() {
while(true) {
try {
Socket server = listener.accept();
DataOutputStream out = new DataOutputStream(server.getOutputStream());
out.writeUTF("What is your name?");
DataInputStream in = new DataInputStream(server.getInputStream());
String user_name = in.readUTF();
out.writeUTF("Hello "+user_name);
while(true) {
String client_message = in.readUTF();
out.writeUTF(client_message);
}
}
catch(IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
int port = 6006;
try {
Thread t = new Server(port);
t.start();
} catch(IOException e) {
e.printStackTrace();
}
}
}
कोई व्याख्या कर सकते हैं मैं गलत क्या कर रहा हूँ?
मैंने थ्रेड को विस्तारित करने के बजाए रननेबल का उपयोग करने पर ध्यान दिया है, लेकिन मैं वहां और भी अधिक समस्याओं में भाग गया, इसलिए मैं इस प्रयास के साथ प्रयास करना और काम करना चाहता हूं।
यहां कोई मल्टीथ्रेडिंग नहीं है। – Cruncher
listener.accept() के बाद सबकुछ एक अलग वर्ग में होना चाहिए जो थ्रेड या लागू करने योग्य उपकरण को विस्तारित करता है। फिर आप उस बिंदु पर उस धागे को शुरू करते हैं, और आपका लूप अगले कनेक्शन – Cruncher