2009-11-22 7 views
6

Kann mir jemand helfen, dieses Programm zu debuggen? Problem in TCP-Programm (Java)

Nachfolgend ist Servercode:

package networking; 

import java.io.IOException; 
import java.io.PrintWriter; 
import java.net.ServerSocket; 
import java.net.Socket; 
import java.util.Scanner; 

class TcpServer { 
    public static void main(String[] args) throws IOException { 
     ServerSocket serverSocket = new ServerSocket(5555); 
     while (true) { 
      Socket client = serverSocket.accept(); 
      Scanner reader = new Scanner(client.getInputStream()); 
      PrintWriter writer = new PrintWriter(client.getOutputStream()); 
      String inputString = reader.nextLine(); 
      System.out.println("Received from client : " + inputString); 
      writer.write(inputString.toUpperCase()); 
      client.close(); 
     } 
    } 
} 

Und dies ist der Client-Code:

package networking; 

import java.io.PrintWriter; 
import java.io.IOException; 
import java.net.Socket; 
import java.util.Scanner; 

class TcpClient { 
    public static void main(String[] args) throws IOException { 
     Socket client = new Socket("localhost", 5555); 
     PrintWriter writer = new PrintWriter(client.getOutputStream()); 
     Scanner reader=new Scanner(client.getInputStream()); 
     writer.println("oPen SOurCe RUleS !"); 
     System.out.println("Received from server : "+reader.nextLine()); 
     client.close(); 
    } 
} 

Das Problem ist, dass, wenn ich dieses Programm ausführen sowohl Client & Server in unbestimmten Wartezustand gehen. Kann mir jemand sagen, was mit diesem Code nicht stimmt?

Vielen Dank im Voraus!

+1

Ist der richtige Code? . . . Die Importe von TcpClient Naht zu vermasseln: nicht 'PrintWriter' importiert und nicht die' DataOutputStream' verwendet. . . . Wie auch immer, ich schlage vor, den PrintWriter nicht zu verwenden, da er keine Exceptions auslöst. Sie müssen nach Fehlern suchen, die 'checkError' aufrufen. IMHO nur gut für die Protokollierung. –

+0

@Carlos: Danke für den Hinweis! Ich habe es jetzt korrigiert! :) – missingfaktor

+0

@Carlos: Was sollte ich anstelle von PrintWriter haben? – missingfaktor

Antwort

7

Haben Sie versucht Flushing die PrintWriter?

Sie schließen den Stream, aber Sie benachrichtigen den Autor nie, dass Sie dabei sind.

+0

Danke! Problem gelöst! – missingfaktor