簡體   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