对Java服务器的HTTP OPTIONS请求

问题描述 投票:0回答:1

我在Java中有一个服务器类和一个客户端类。

事实是我正在localhost上进行测试,并且希望服务器响应HTTP的OPTIONS请求。

我不知道我在做什么错,我的客户端服务器收到了请求,但是没有返回我想要的,我也不知道我在做什么错。

我同时在这里离开客户端类和服务器,以查看是否有人对此问题有所了解。

客户端TCP

public class clientetcp {

 public static void main(String argv[]) throws IOException {

        /*
         * Leemos los argumentos del programa para saber a qué
         * servidor hay que conectarse.
         */
        if (argv.length == 0) {
            System.err.println("java clientetcp servidor");
            System.exit(1);
        }


        Socket socket = null;
        InetAddress address;
        byte[] mensaje_bytes = new byte[256];
        String mensaje = "";

        try {
            /*
             * Establecemos una conexión con el servidor en el puerto 6001 y 
             * enviamos lo que el usuario escribe por teclado. Acabamos con la
             * palabra end.
             */

            address = InetAddress.getByName(argv[0]);
            socket = new Socket(address, 6001);
            DataInputStream in = new DataInputStream(socket.getInputStream());
            DataOutputStream out = new DataOutputStream(socket.getOutputStream());

            do {

                 out.writeUTF("GET /index.html HTTP/1.0");
                 out.writeUTF("");   // blank line separating header & body
                 out.flush();

                 String line;
                 line = in.readUTF();
                 System.out.println(line);
            } while (!mensaje.startsWith("end"));

        } catch (Exception e) {
            System.err.println(e.getMessage());
            System.exit(1);
        } finally {

            if (socket != null) {
                System.out.println("Cerrando socket cliente ...");
                socket.close();
            }
        }

    }
}

服务器TCP

public class servidortcp {

 public static void main(String argv[]) throws IOException {
        ServerSocket socket = null;
        String mensaje;
        PrintWriter salida = null;
        String salidaOstias;
        String pedro;

        try {

            /*
             * Creamos un socket de tipo servidor que escucha en el puerto
             * TCP 6001 y espera conexiones de los clientes.
             * Este programa recibe lo que viene del socket y lo muestra
             * por pantalla.
             */
            socket = new ServerSocket(6001);
            Socket socket_cli = socket.accept();
            DataInputStream in = new DataInputStream(socket_cli.getInputStream());
            DataOutputStream out = new DataOutputStream(socket_cli.getOutputStream());
            do {
                mensaje = in.readUTF();
                System.out.println(mensaje);
                out.writeUTF("CONTESTO A LO QUE ME HAS DICHO");

            } while (1 > 0);
        } catch (Exception e) {
            if (socket != null) {
                System.out.println("Cerrando socket servidor ...");
                socket.close();
            }
            System.err.println(e.getMessage());
            System.exit(1);
        }
    }
}
java
1个回答
0
投票

我没有调试您的代码,但是我认为问题出在下面。

在服务器端,您应该为每个接受的连接启动并启动一个单独的线程。但是您没有这样做。

并且您的服务器处理主线程中的所有请求。

并且在这种情况下,直到它处理了循环的一个迭代(请求),它才会转到另一个迭代,因此不会处理另一个请求。

© www.soinside.com 2019 - 2024. All rights reserved.