मैं एक कनेक्शन स्थापित करने के लिए बस एक (सरल, स्टार्टर्स के लिए) सर्वर-क्लाइंट चीज़ प्रोग्राम करने की कोशिश कर रहा हूं और देख रहा हूं कि यह काम करता है या नहीं। और यह करता है। जब तक मैं अपनी चार दीवारों/नेटवर्क के अंदर रहता हूं। जैसे ही मैं अपने राउटर आईपी के माध्यम से जाने की कोशिश करता हूं, क्लाइंट एक शक्तिशाली ठीक त्रुटि संदेश उत्पन्न करता है। सभी सामान्य संदिग्धों को समाप्त कर दिया गया है: राउटर पोर्ट अग्रेषण चालू है, फ़ायरवॉल हस्तक्षेप नहीं करता है (ठीक है, यह तब भी काम नहीं करता है जब मैं इसे बंद करता हूं), और canyouseeme.org कहता है कि यह मेरे चुने हुए कनेक्शन को स्थापित कर सकता है जब सर्वर चलाता है पोर्ट।जावा नेटवर्किंग सर्वर-क्लाइंट त्रुटि
यहां सर्वर के लिए स्रोत कोड है, क्योंकि मुझे पता चला कि थोड़ा टेलनेटिंग के साथ कमांड लाइन के माध्यम से जाना संभव था। जब मैं एक कनेक्शन स्थापित करने की कोशिश, यह सिर्फ कहते हैं Could not open connection to the host, on port 49163:Connection failed
सर्वर:
import java.net.*;
import java.io.*;
public class ChatServer {
public static void main(String[] args) throws IOException {
ServerSocket server = null;
try {
System.setProperty("java.net.preferIPv4Stack" , "true");
server = new ServerSocket(49163);
} catch (IOException e) {
System.err.println("Could not listen on port: 49163.");
System.exit(1);
}
Socket client = null;
try {
client = server.accept();
} catch (IOException e) {
System.err.println("Accept failed.");
System.exit(1);
}
PrintWriter out = new PrintWriter(client.getOutputStream(), true);
BufferedReader in = new BufferedReader(newInputStreamReader(client.getInputStream()));
String inputLine;
String outputLine;
out.println("Connection established");
while ((inputLine = in.readLine()) != null) {
if (inputLine.equals("exit")) {
break;
}
outputLine = inputLine;
out.println(outputLine);
}
out.close();
in.close();
client.close();
server.close();
System.out.println("Server offline");
}
}
ओह, हाँ, preferIP4vStack कुछ मैं Stackoverflow पर उठाया था, लेकिन यह मेरे लिए काम करने के लिए प्रतीत नहीं होता।
किसी कारण से मैं क्लाइंट के लिए कोड को उलझाने में सक्षम नहीं हूं, मुझे स्वरूपण के बारे में संदेश मिलते रहते हैं, और मैं इसे समझ नहीं पा रहा हूं। लेकिन जिस तरह से मैं इसे देखता हूं वह यह है कि मैं कमांड लाइन के माध्यम से कनेक्ट करने में भी सक्षम नहीं हूं (जब मैं "असली" आईपी से कनेक्ट करने का प्रयास करता हूं), तो ग्राहक को शामिल होने की आवश्यकता नहीं है। लेकिन आप के लिए वैसे भी त्रुटि देखना चाहते हैं जो:
java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at ChatClient.main(ChatClient.java:12)
क्या आप अपवाद फेंक रहे क्लाइंट (क्लाइंट?) कोड पोस्ट कर सकते हैं? इसके अलावा, अगर आपको अपवाद फेंकने के साथ एक ही शैली को रखा जाता है, तो उपयोगकर्ता के अनुकूल संदेश के अलावा पूर्ण स्टैक ट्रेस को प्रिंट करने में मदद मिल सकती है। – Windle
विशाल, और आप इसे कैसे जानते हैं? –
@ निकोलई एनफेटिसोव: मेरी गलती। ओपी के माध्यम से त्रुटि से गुजरने के दौरान कुछ बच निकला था। –