Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Sockets: Daten werden nicht verschickt

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.08.2004
    Beiträge
    8

    Sockets: Daten werden nicht verschickt

    Hallo,
    Ich muss zwischen einem Client und einem Server beliebige Byte-Streams hin und her schicken.
    Komischerweise sendet der Client die Daten erst, wenn ich das Programm beende, oder den Stream explizit schliesse.
    Kann mir jemand weiterhelfen?

    Client
    Code:
    package test;
    
    import java.io.IOException;
    import java.io.PrintStream;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    public class Client {
    
    	public static void main(String[] args) throws UnknownHostException, IOException {
    		
    		Socket socket = new Socket("localhost", 55555);
    		PrintStream out = new PrintStream(socket.getOutputStream(), true);
    		
    		while (true) {
    			try {
    				Thread.sleep(1000);
    			} catch (InterruptedException e) {}		
    		
    			byte[] stream = "hallo".getBytes();
    	
    			out.write(stream);
    			out.flush();
    		
    		}
    		
    	}
    	
    }
    Server
    Code:
    package test;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class Server {
    
    	public static void main(String[] args) throws IOException {
    		
    		ServerSocket serverSocket = new ServerSocket(55555);
    		Socket socket = serverSocket.accept();
    		
    		BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    		
    		
    		while (true) {
    			try {
    				Thread.sleep(100);
    			} catch (InterruptedException e) {}
    			
    			if (in.ready()) {
    				
    				byte[] stream = in.readLine().getBytes();	
    				System.out.println(new String(stream));
    			}
    			
    		}
    
    	}
    	
    }
    Grüsse,
    Chrigu

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ich vermisse in deinem Sendecode das Newline am Ende des Strings, bzw. die Benutzung von writeln().

    Oder dein Empfangscode geht fälschlicherweise davon aus, dass der Client Zeilen sendet.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.08.2004
    Beiträge
    8
    Zitat Zitat von anda_skoa Beitrag anzeigen
    Ich vermisse in deinem Sendecode das Newline am Ende des Strings, bzw. die Benutzung von writeln().
    Genau, das verflixte Newline!
    Eine writeln-Funktion gibt es leider nicht.
    Es reicht aber, wenn man einfach noch das Newline mitschickt!

    Code:
    this.out.write(out);
    this.out.write("\n".getBytes());

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von chrigu Beitrag anzeigen
    Genau, das verflixte Newline!
    Eine writeln-Funktion gibt es leider nicht.
    Mein Fehler: println()

    Allerdings ist das für deine Aufgabenstellung ohnehin irrelevant, für beliebige Bytestreams kannst du diese Form des I/O (zeilenorientiert) ohnehin nicht verwenden.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •