Java中套接字的一些问题

时间:2019-02-21 19:48:29

标签: java sockets

我是第一次开始使用套接字。 我正在尝试设置一个服务器,其唯一功能是将我发送的字符串还给客户端。 客户端不发送字符串,而服务器不接收字符串。代码如下:

服务器代码:

package servidor;

//All imports needed

public class Servidor {

    public static void main (String[] args){
        try{
            ServerSocket socketServidor = new ServerSocket(2000);
            Socket socketDatos = socketServidor.accept();
            PrintWriter escribirCliente = new PrintWriter(socketDatos.getOutputStream(),true);
            BufferedReader leerCliente = new BufferedReader(new InputStreamReader(socketDatos.getInputStream()));

            String linea;

            while((linea = leerCliente.readLine())!= null){
                System.out.println("hola");
                System.out.println("Server: "+ linea);
                escribirCliente.println(linea);
                if(linea.equals("x")){
                    break;
                }
            }

            socketDatos.close();
            escribirCliente.close();
            leerCliente.close();
            socketServidor.close();

        } catch (IOException e){
            System.out.println("Fallo en la conexion.");
        }
    }
}

客户代码:

package cliente;

//All imports needed

public class Cliente {

    public static void main(String[] args) throws IOException{
        Socket socket = new Socket("localhost", 2000);
        BufferedReader leerServidor = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter escribirServidor = new PrintWriter(socket.getOutputStream());

        BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));

        String linea = teclado.readLine();
        //System.out.println(""+linea);

        while (!(linea.equals("x"))){
            System.out.println("en while");
            escribirServidor.println(linea);
            System.out.println("eco: "+ leerServidor.readLine());
            linea = teclado.readLine();
        }

        escribirServidor.close();
        leerServidor.close();
        teclado.close();
        socket.close();

    }
}

问题是: 在客户端中,执行永远不会到达“ eco”,但确实会到达“ en while”。但是在服务器中,那是永远不会达到的。甚至没有打印“ hola”。我以为问题应该在阅读该行时出现,但我无法解决。

有什么想法吗?

提前谢谢!

0 个答案:

没有答案