Netzwerk-Thread

Status
Nicht offen für weitere Antworten.

H3llGhost

Bekanntes Mitglied
Hallo Leute,

ich habe folgenden "Server"-Code:
Code:
import java.net.*;
import java.io.*;
import java.util.*;

public class ChatServer extends Thread {

       protected Socket socket = null;
       public static int port;

       public static void main(String args[]) {

              port = 4711;

              // Socket bereitstellen, an dem "gelauscht" wird
              try {
                  ServerSocket listen = new ServerSocket(port);

                  while(true) {
                              ChatServer aClient = new ChatServer(listen.accept());
                  }
              } catch (IOException ioe) {
                  System.err.println("Fehler: "+ioe.toString());
              }
       }

       public ChatServer(Socket socket) {
              this.socket = socket;
              start();
       }

       public void run() {
       try {
            InputStreamReader  isr = new InputStreamReader(socket.getInputStream());
            BufferedReader in = new BufferedReader(isr);
            while (true)
            {
             if (in.readLine() != "") System.out.println(in.readLine());
             //DataOutputStream os = new DataOutputStream(socket.getOutputStream());
             //MessageVerteilen(os);
             //socket.close(); // das ist neu
            }
           } catch (IOException e) {
            System.err.println("Fehler: "+e.toString());
           }
       }

       public void MessageVerteilen(DataOutputStream out) throws IOException {
              out.writeBytes("Alles OK");
              out.flush();
       }
} // Ende der Klasse

Der Client-Code ist folgender:
Code:
import java.net.*;
import java.io.*;
class ChatClient
{
  public static void main( String[] args ) throws Exception
  {
    Console eingabeTastatur = System.console();
    Socket server = new Socket( "localhost", 4711 );
    InputStreamReader  in  = new InputStreamReader(server.getInputStream());
    BufferedReader datenstromEinlesen = new BufferedReader(in);
    OutputStreamWriter out = new OutputStreamWriter(server.getOutputStream());
    PrintWriter pw = new PrintWriter(out, true);

    System.out.print("Geben Sie die erste Zahl ein:");
    String zahl1 = eingabeTastatur.readLine();
    pw.println(zahl1);
    System.out.print("Geben Sie die zweite Zahl ein:");
    String zahl2 = eingabeTastatur.readLine();
    pw.println(zahl2);
  }
}

Wenn ich den Server einschalte und dann die Client starte und dort eine Eingabe mache kommt die erste Eingabe garnichts an. Erst bei der zweiten und dann kommt auch ein Fehler.

12
Fehler: java.net.SocketException: Connection reset

Kann mir jemand helfen?
Danke im Voraus!
 

anfänger15

Bekanntes Mitglied
so

Code:
import java.net.*;
import java.io.*;
import java.util.*;

public class ChatServer extends Thread {

       protected Socket socket = null;
       public static int port;

       public static void main(String args[]) {

              port = 4711;

              // Socket bereitstellen, an dem "gelauscht" wird
              try {
                  ServerSocket listen = new ServerSocket(port);

                  while(true) {
                              ChatServer aClient = new ChatServer(listen.accept());
                  }
              } catch (IOException ioe) {
                  System.err.println("Fehler: "+ioe.toString());
              }
       }

       public ChatServer(Socket socket) {
              this.socket = socket;
              start();
       }

       public void run() {
       try {
            InputStreamReader  isr = new InputStreamReader(socket.getInputStream());
            BufferedReader in = new BufferedReader(isr);
            String read;
            while ((read =in.readLine()) != null)
            {
            System.out.println(read);
             //DataOutputStream os = new DataOutputStream(socket.getOutputStream());
             //MessageVerteilen(os);
             //socket.close(); // das ist neu
            }
             socket.close();
           } catch (IOException e) {
            System.err.println("Fehler: "+e.toString());
           }
          
       }

       public void MessageVerteilen(DataOutputStream out) throws IOException {
              out.writeBytes("Alles OK");
              out.flush();
       }
} // Ende der Klasse


Code:
import java.net.*;
import java.io.*;
class ChatClient
{
  public static void main( String[] args ) throws Exception
  {
    BufferedReader eingabeTastatur = new BufferedReader(new InputStreamReader(System.in));
    Socket server = new Socket( "localhost", 4711 );
    InputStreamReader  in  = new InputStreamReader(server.getInputStream());
    BufferedReader datenstromEinlesen = new BufferedReader(in);
    OutputStreamWriter out = new OutputStreamWriter(server.getOutputStream());
    PrintWriter pw = new PrintWriter(out, true);


    System.out.print("Geben Sie die erste Zahl ein:");
    String zahl1 = eingabeTastatur.readLine();
    pw.println(zahl1);
    System.out.print("Geben Sie die zweite Zahl ein:");
    String zahl2 = eingabeTastatur.readLine();
    pw.println(zahl2);
    
    pw.flush();
    pw.close();
    in.close();
    server.close();
  }
}


Du darfst im Server nicht 2mal readLine aufrufen, denn so testet er zuerst ob das was bei "erste Zahl" eingegeben wurde null ist und wenn das nicht der Fall ist liest er nochmal " das was bei zweite Zahl" eingegeben wurde und zeigt nur das 2 auf der Konsole an.
 

H3llGhost

Bekanntes Mitglied
Danke erstmal für deine Hilfe!

Jetzt habe ich den Code in der Server.java wie folgt angepasst:

Code:
[...]
       public void run() {
       try {
            InputStreamReader  isr = new InputStreamReader(socket.getInputStream());
            BufferedReader in = new BufferedReader(isr);
            while (true)
            {
             String tmp = in.readLine();
             if (tmp != "") System.out.println(tmp);
             //DataOutputStream os = new DataOutputStream(socket.getOutputStream());
             //MessageVerteilen(os);
             //socket.close(); // das ist neu
            }
            socket.close();
           } catch (IOException e) {
            System.err.println("Fehler: "+e.toString());
           }
       }
[...]

Aber beim Kompilieren kommt folgender Fehler:
ChatServer.java:43:13: unreachable statement
socket.close();
^
 

masta // thomas

Bekanntes Mitglied
Du könntest deine Schleife z.B. so umbauen:

Code:
String tmp;
while((tmp = in.readLine()) != null)
{
    if(!tmp.equals(""))
        System.out.println(tmp);
}
 

H3llGhost

Bekanntes Mitglied
Sorry ...
Hatte ich überlesen ... ;)

Jetzt funktioniert es wie ich es mir erhofft hatte.
Wie kann ich jede Client-Connection mit einer eigenen ID am besten Versehen?
Ein Array bestehend aus IP und ID?

Wäre über Vorschläge erfreut ...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Schiffe versenken, Netzwerk, swing, Thread Java Basics - Anfänger-Themen 5
J Datei aus Netzwerk auslesen Java Basics - Anfänger-Themen 9
T Access mit Java verbinden im netzwerk Java Basics - Anfänger-Themen 3
S Input/Output Vom Netzwerk kopieren Java Basics - Anfänger-Themen 6
B Unique ID für Device im internen Netzwerk Java Basics - Anfänger-Themen 19
M Neuronales Netzwerk Java Basics - Anfänger-Themen 3
fLooojava Daten im selben Netzwerk an IP Java Basics - Anfänger-Themen 1
M Semantisches Problem HashMap/Netzwerk Java Basics - Anfänger-Themen 4
H Entwicklung am selben Projekt im Netzwerk Java Basics - Anfänger-Themen 9
T Erkennen ob ein Pfad lokal oder im Netzwerk ist Java Basics - Anfänger-Themen 13
B Erste Schritte Dateien ueber Netzwerk kopieren Java Basics - Anfänger-Themen 2
P Probleme bei senden eines Strings übers Netzwerk Java Basics - Anfänger-Themen 4
P Strings via Netzwerk übermitteln Java Basics - Anfänger-Themen 8
K Router über Netzwerk Booten lassen Java Basics - Anfänger-Themen 8
G Netzwerk unterbrechen Java Basics - Anfänger-Themen 10
S Netzwerk nach ip adressen scannen Java Basics - Anfänger-Themen 7
M In Router einloggen und PCs im Netzwerk erkennen Java Basics - Anfänger-Themen 18
U Netzwerk Chatprogramm Quellcode funktioniert nicht Java Basics - Anfänger-Themen 6
Nic.o getProperties - übers Netzwerk Java Basics - Anfänger-Themen 2
0 Objekte übers Netzwerk schicken? Bibliothek? Java Basics - Anfänger-Themen 2
D Java Tutorial zur Netzwerk / Datenbankprogrammierung gesucht Java Basics - Anfänger-Themen 2
F Bild per Netzwerk übertragen Java Basics - Anfänger-Themen 3
G Netzwerk: RMI Objekt-Referenzen Java Basics - Anfänger-Themen 2
A Netzwerk Programmieren Java Basics - Anfänger-Themen 2
H ObjectOutputStream Netzwerk writeObject Java Basics - Anfänger-Themen 6
G Strings übers Netzwerk verschicken Java Basics - Anfänger-Themen 2
Z Netzwerk graphisch Darstellen Java Basics - Anfänger-Themen 5
L Dateien im Netzwerk bearbeiten (UNC-Pfade und gemappte Laufw Java Basics - Anfänger-Themen 5
J Audio capturen und über's Netzwerk streamen? Java Basics - Anfänger-Themen 2
C BufferedReader und BufferedWriter im Netzwerk Java Basics - Anfänger-Themen 6
M E-Mail im Netzwerk über Microsoft Exchange Server versenden? Java Basics - Anfänger-Themen 3
Leyla Thread isInterrupt Java Basics - Anfänger-Themen 18
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
A Thread XML-Dateien zusammenfügen Java Basics - Anfänger-Themen 11
F influxdb Upload in eigenem Thread Java Basics - Anfänger-Themen 2
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
berserkerdq2 Größter unterschied von extends thread und implements runnable? Java Basics - Anfänger-Themen 2
T Thread beenden aus zweiter Klasse Java Basics - Anfänger-Themen 4
A Thread - Synchronized Java Basics - Anfänger-Themen 10
A Thread Producer - Consumer Java Basics - Anfänger-Themen 1
A Thread-Semhapore Java Basics - Anfänger-Themen 0
A Thread Exchanger Java Basics - Anfänger-Themen 22
A Thread-Cyclicbarrier Java Basics - Anfänger-Themen 4
B In einem Thread Endlosschleife beenden Java Basics - Anfänger-Themen 19
A Thread-Verklemmung Java Basics - Anfänger-Themen 10
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
A Thread find number Java Basics - Anfänger-Themen 8
F Thread.sleep() Java Basics - Anfänger-Themen 5
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
A Thread Java Basics - Anfänger-Themen 3
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
A Thread Java Basics - Anfänger-Themen 8
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
M Thread-Zustände Java Basics - Anfänger-Themen 6
CptK For-Schleife in Thread nach jedem Durchlauf pausieren Java Basics - Anfänger-Themen 35
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
B Endlosschleife Thread sauber beenden Java Basics - Anfänger-Themen 19
D Java Thread wartet nur ein mal Java Basics - Anfänger-Themen 1
D Java Thread wartet nur ein mal Java Basics - Anfänger-Themen 0
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
C Thread und TimerTask, Verstädnisproblem Java Basics - Anfänger-Themen 10
amgadalghabra Sorting Thread Launcher Java Basics - Anfänger-Themen 3
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
A Thread Java Basics - Anfänger-Themen 4
A Thread Java Basics - Anfänger-Themen 1
A Thread Java Basics - Anfänger-Themen 0
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
L Liste in anderem Thread laden Java Basics - Anfänger-Themen 1
B Thread / Prozess stoppen? Java Basics - Anfänger-Themen 22
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
B Threads Thread sleep() Method einfache Frage Java Basics - Anfänger-Themen 8
W Thread Aufgabe - Vorgehensweise Java Basics - Anfänger-Themen 8
L Liste in anderem Thread laden Java Basics - Anfänger-Themen 0
J Threads PrograssBar update während thread Java Basics - Anfänger-Themen 13
D Compiler-Fehler Wert auf Datenbank übertragen und Sleep Thread Java Basics - Anfänger-Themen 3
Spencer Reid JavaFX Memory Thread.sleep Java Basics - Anfänger-Themen 1
S Thread.sleep mit JProgressBar Java Basics - Anfänger-Themen 1
ralfb1105 Frage zu Thread Synchronisation mit wait() und notify() Java Basics - Anfänger-Themen 3
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
J JavaFX -> SocketIO -> Thread -> Update Label Java Basics - Anfänger-Themen 13
J Thread Handling Java Basics - Anfänger-Themen 9
A Problem mit Thread.sleep Java Basics - Anfänger-Themen 4
C Thread in Methode + raus aus der Schleife Java Basics - Anfänger-Themen 10
E Threads Thread in While-Schleife nur einmal starten Java Basics - Anfänger-Themen 2
F Daten von Thread an den aufrufenden zurückgeben Java Basics - Anfänger-Themen 22
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
B Thread Problem Java Basics - Anfänger-Themen 7
N KeyListener in Thread Java Basics - Anfänger-Themen 0
M Thread.sleep() Funktion Java Basics - Anfänger-Themen 1
W JLabel in Main aus Thread verändern. Java Basics - Anfänger-Themen 4
D Ausgeben welcher Thread gerade Arbeitet Java Basics - Anfänger-Themen 8
N Threads Thread-Fehler Java Basics - Anfänger-Themen 2
F Thread um Uhrzeit ausführen Java Basics - Anfänger-Themen 5
F Get/Post als eigener Thread mit Rückgabe Java Basics - Anfänger-Themen 5
J Exception in thread "main" Java Basics - Anfänger-Themen 1
F Thread der auf eine Queue wartet, sicher beenden Java Basics - Anfänger-Themen 4
B Animation mit Thread(s) Java Basics - Anfänger-Themen 23
I Thread.sleep (1000); Java Basics - Anfänger-Themen 1
M Threads Jede Klasse einem Thread zuweisen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben