繁体   English   中英

java http 服务器实施和 JMEter 测试

[英]java http server implementation and JMEter testing

控件正在到达放置、获取、发布请求,但我无法从服务器获得回复,http://localhost:8080 抛出无效 ip 错误,jmeter 测试用例显示错误状态

我已经配置了一个服务器如下: public class HttpServer {

private static final int MAX_THREADS = 64;

private static final Map<Integer, AtomicInteger> threadCounts = new ConcurrentHashMap<>();

private static final ExecutorService threadPool = Executors.newFixedThreadPool(MAX_THREADS);



public static void main(String[] args) {



    ArrayList<Integer> portNodes;

    ArrayList<Integer> timeout;



    XMLFileHandler xmlFileHandler = new XMLFileHandler();

    xmlFileHandler.readFromXML("config.xml");

    portNodes = xmlFileHandler.getPortNodes();

    timeout = xmlFileHandler.getTimeout();



    for (int i = 0; i < portNodes.size(); i++) {

        int port = portNodes.get(i);

        int timeouts = timeout.get(i);

                  if (!threadCounts.containsKey(port)) {

                             threadCounts.put(port, new AtomicInteger(0));

                  }         

                  try {

                             ServerSocket serverSocket = new ServerSocket(port);

                             serverSocket.setSoTimeout(timeouts);

                             threadPool.submit(() -> {

                                        while (true) {

                                                   try {

                                                              Socket socket = serverSocket.accept();

                                                              OutputStream os = socket.getOutputStream();

                                                              os.write("welcome to server".getBytes());

                                                              System.out.println("connected successfully" + port);

                                                              threadCounts.get(port).incrementAndGet();

                                                              threadPool.submit(new RequestHandler(socket));

                                                   }

                                                   catch (SocketTimeoutException e) {

                                                              System.out.println("Timeout occurred on port: " + port);

                                                   }

                                                   catch (IOException e) {

                                                              e.printStackTrace();

                                                   }

                                        }

                             });

                             }

                  catch (BindException e) {

                System.out.println("Port " + port + " is already in use. Please choose a different port.");

            }catch(IOException e) {

                  System.out.println("erro"+port);

            }

    }

}

私有 static class RequestHandler 实现 Runnable {

private final Socket socket;



public RequestHandler(Socket socket) {

    this.socket = socket;

}



public void run() {

    try {

       System.out.println("in request handler");

        // Handle HTTP request

        InputStream input = socket.getInputStream();

        OutputStream output = socket.getOutputStream();



        // Parse the request

        BufferedReader reader = new BufferedReader(new InputStreamReader(input));

        String[] requestLine = reader.readLine().split(" ");

        String method = requestLine[0];

        String url = requestLine[1];

        String httpVersion = requestLine[2];



        // Handle GET request

                        if (method.equals("GET")) {

            //TODO: Implement handling of GET request

        }

        // Handle POST request

        else if (method.equals("POST")) {

            //TODO: Implement handling of POST request

        }

        // Handle PUT request

        else if (method.equals("PUT")) {

            //TODO: Implement handling of PUT request

        }

        else {

            // Send error message for unsupported method

            output.write("HTTP/1.1 400 Bad Request\r\n\r\n".getBytes());

        }



        // Close socket and release resources

        input.close();

        output.close();

        socket.close();

        threadCounts.get(socket.getPort()).decrementAndGet();

    } catch (IOException e) {

        e.printStackTrace();

    }

}

}

}

您的“http 服务器”未实现HTTP 协议,因此您将无法使用HTTP 请求采样器进行加载。

考虑移动到TCP 采样器HTTP 原始请求采样器(可以使用JMeter 插件管理器安装)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM