2009-11-22 13 views
6

¿Alguien me puede ayudar a depurar este programa?Problema en el programa TCP (Java)

El siguiente es el código del servidor:

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(); 
     } 
    } 
} 

Y este es el código de cliente:

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(); 
    } 
} 

El problema es que cuando ejecuto este programa tanto para el cliente & servidor entra en estado de espera indefinida. ¿Alguien podría decirme qué pasa con este código?

¡Gracias de antemano!

+1

¿Es el código correcto? . . . Las importaciones de costuras de TcpClient se han estropeado: no se han importado 'PrintWriter' y no se han utilizado' DataOutputStream'. . . . De todos modos, sugiero no utilizar el PrintWriter, ya que NO arroja Excepciones, debe verificar los errores que invocan 'checkError'. En mi humilde opinión solo es bueno para la tala. –

+0

@Carlos: ¡Gracias por señalarlo! ¡Lo he corregido ahora! :) – missingfaktor

+0

@Carlos: ¿Qué debería haber usado en lugar de PrintWriter? – missingfaktor

Respuesta

7

¿Has probado Flushing el PrintWriter?

Cierre la secuencia pero nunca le notifica al escritor que está a punto de hacerlo.

+0

¡Gracias! ¡Problema resuelto! – missingfaktor

Cuestiones relacionadas