Exception in thread "main" java.net.ConnectException: Connection refused: connect Socket-Programmierung mit Java
Ich habe vor kurzem erfahren, über Socket-Programmierung zwischen client und server. Also ich dachte an eine übung der Verbindung von client und server. Allerdings habe ich auf diese Fehlermeldung, wenn ich versuche den code auszuführen:
Exception in thread "main" java.net.ConnectException: Connection refused: connect
Dies ist mein client-Klasse-code:
public class clientpart {
public static void main(String[]args) throws UnknownHostException, IOException {
Scanner input = new Scanner(System.in);
int port = 8080;
String host=null;
String answer; String sendMessage; String receivedMessage;
InetAddress address = InetAddress.getByName(host);
Socket socket= new Socket(address,port);
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
System.out.println("Please answered the following question: ");
System.out.println("What is the subject code for Socket Programming?");
answer = input.nextLine();
sendMessage = answer;
bw.write(sendMessage);
bw.newLine();
bw.flush();
System.out.println("Message sent to server: "+sendMessage);
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
receivedMessage = br.readLine();
System.out.println("Message received from server : " + receivedMessage);
}
}
Dies ist mein server code:
public class serverpart {
public static Socket socket;
public static void main(String[]args) throws IOException {
int port = 8080;
String answer; String returnedMessage; String reply;
ServerSocket server = new ServerSocket(port);
System.out.println("Server start at port "+port+".");
while(true)
{
socket = server.accept();
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
answer = br.readLine();
System.out.println("Message sent from client: " + answer);
if("NET 3202".equals(answer) || "net 3202".equals(answer) || "NET3202".equals(answer) || "net3202".equals(answer)){
reply = "Correct!";
returnedMessage = reply;
}
else{
reply = "Wrong!";
returnedMessage = reply;
}
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
bw.write(returnedMessage);
bw.newLine();
System.out.println("Message replied to client: "+returnedMessage);
bw.flush();
}
}
}
Die vollständige Fehlermeldung lautet:
Exception in thread "main" java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:244)
at clientpart.main(clientpart.java:13)
C:\Users\PeiErn\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 1 second)
Ich hoffe mir kann jemand helfen, danke.
Ich würde wohl den Input / Output-Streams zur gleichen Zeit direkt nach akzeptieren Sie die Verbindung (auf dem server) und rechts, nachdem Sie Sie angeschlossen ist (auf dem client). Ich glaube, es ist durch und seit Sie laufen auf verschiedenen "threads" die streams sind nicht immer zur gleichen Zeit erstellt. was könnte einen Fehler verursachen? idk? nur meine Meinung.
Danke @nicolas für die Formatierung der poster code. Original-poster: die posting schlecht formatierten code macht nur deine Frage schwieriger zu Lesen und zu verstehen-warum das?
Nur das problem ist Ihr port-Nummer. Sie können nicht reservierte Ports. ändern Sie einfach die port-Nummer, um ein Ding wie 9085 es wird funktionieren
Ich habe versucht, ändern der port-Nummer, die andere über 80, aber dann ist der client-Klasse zeigt mir diese Fehlermeldung: Exception in thread "main" java.net.ConnectException: Connection refused: connect
'ConnectException: Verbindung abgelehnt" bedeutet nur, du hast den Hostnamen oder die IP-Adresse oder port falsch im client, oder Sie hatte nicht den server gestartet, wenn Sie lief der client.
Danke @nicolas für die Formatierung der poster code. Original-poster: die posting schlecht formatierten code macht nur deine Frage schwieriger zu Lesen und zu verstehen-warum das?
Nur das problem ist Ihr port-Nummer. Sie können nicht reservierte Ports. ändern Sie einfach die port-Nummer, um ein Ding wie 9085 es wird funktionieren
Ich habe versucht, ändern der port-Nummer, die andere über 80, aber dann ist der client-Klasse zeigt mir diese Fehlermeldung: Exception in thread "main" java.net.ConnectException: Connection refused: connect
'ConnectException: Verbindung abgelehnt" bedeutet nur, du hast den Hostnamen oder die IP-Adresse oder port falsch im client, oder Sie hatte nicht den server gestartet, wenn Sie lief der client.
InformationsquelleAutor Silver Archer | 2016-11-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es 2 Probleme in Ihrem Programm:
80
die Teil der well-known ports oder system ports (0 bis 1023), so müssen Sie den server starten mit admin Rechte, oder ändern Sie es für8080
zum Beispiel.bw.newLine()
nach jedembw.write(sendMessage)
so, dass es wartet für immer da auf der anderen Seite rufen Siebr.readLine()
was bedeutet, dass es wartet, bis eine ganze Zeile, während Sie nicht senden Sie die Ende-Zeile-Zeichen.Ändern Sie Ihren code für diese:
Server-Teil:
Ausgabe:
Client-Teil:
Ausgabe:
Auch ich prüfen, ob der server lauscht auf port 8080, und nicht seiner. Ist dass das problem? Danke.
habt Ihr es auf dem client und auf dem server? Sie starten beide auf der gleichen Maschine? ja das ist richtig, connection refused bedeutet, dass der server nicht lauscht oder die firewall blockt die Anfragen auf diesem port
Anscheinend habe ich den server starten zuerst oh mein Gott, ich danke Ihnen so sehr für die Hilfe!
ja, in der Tat müssen Sie immer zunächst den server starten
InformationsquelleAutor Nicolas Filotto