Probleme mit Input- / Output-Streams

  • Themenstarter Themenstarter PeiWei
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
P

PeiWei

Gast
Hi.

Ich programmiere gerade ein kleines TicTacToe-Spiel und komme an einer Stelle nicht weiter.

Mein Server empfängt beim Programmstart die Nachricht "0000" und soll dann eine Spieler-ID an den Client zurücksenden. Allerdings hängt der Client und der Server emfängt auch nicht die Nachricht.
Sende ich keine Spieler-ID wird die Nachricht "0000" empfangen.

Es sieht so aus, als ob der Client auf Daten wartet.

Hier mal der Quellcode des Servers:

Code:
	while ( true )
        {
        	Socket client = server.accept();
        	
    		DataOutputStream out = new DataOutputStream( client.getOutputStream() );
    		DataInputStream in = new DataInputStream( client.getInputStream() );
    		    		
        	// Form einer Nachricht: 0000, Spieler-Aktion-Wert
        	
        	sMessage = in.readLine();
        	
        	System.out.println( "Nachricht: " + sMessage );
        	
        	if( sMessage.equals( "0000" ) )		// JUHU.
        	{
        		System.out.println( "Spieler zurücksenden." );
        		
        		if( iPlayerNumber != 3 )
        		{
        			System.out.println( "Client connected." );
        			System.out.println( "Schreibe " + iPlayerNumber + " aus." );

        			out.write( iPlayerNumber );
        			
        			iPlayerNumber++;
        		}
        		else{}
        	}
        	else{}
        	client.close();
        }

Und hier der des Clients:

Code:
	public void connect() throws IOException 
	{
		Socket client = new Socket ( "localhost", iPort );
		
		DataOutputStream out = new DataOutputStream( client.getOutputStream() );
		DataInputStream in = new DataInputStream( client.getInputStream() );
				
		out.writeBytes( "0000" );		// am Server anmelden, Spielernummer erfragen

		// Das funktioniert irgendwie nicht :-(
		// iPlayer = in.read();			// Spielernummer einlesen
		
		System.out.println( iPlayer );
		iConnected = 1;
		
		// Ressourcen wieder freigeben
		out.close();
		in.close();
		client.close();
	}


Ich hoffe, ihr könnt mir helfen, ich verzweifel nämlich langsam an diesem Problem :-(

Danke schon mal!

Philipp
 
Versuch mal
Code:
out.writeBytes( "0000\n" );

Der Server will ja mit readLine eine ganze Zeile lesen; solange er aber kein Zeilenende findet, hängt die Methode im Server.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben