如何通过套接字查找 HTTP 请求的响应时间
我使用的是连接到服务器的 Java 套接字。如果我发送 HEADER http 请求,如何测量来自服务器的响应时间?我必须使用提供的java计时器,还是有更简单的方法?
我正在寻找一个简短的答案,我不想使用其他协议等。显然,我也不希望有一个将我的应用程序绑定到特定操作系统的解决方案。请人们,仅限IN-CODE解决方案。
我使用的是连接到服务器的 Java 套接字。如果我发送 HEADER http 请求,如何测量来自服务器的响应时间?我必须使用提供的java计时器,还是有更简单的方法?
我正在寻找一个简短的答案,我不想使用其他协议等。显然,我也不希望有一个将我的应用程序绑定到特定操作系统的解决方案。请人们,仅限IN-CODE解决方案。
curl -s -w "%{time_total}\n" -o /dev/null http://server:3000
我会说这取决于您尝试测量的确切间隔,从您发送的请求的最后一个字节到您收到的响应的第一个字节的时间量?还是直到收到整个响应?或者您正在尝试仅测量服务器端时间?
如果您尝试仅测量服务器端处理时间,您将很难计算出请求到达和返回响应在网络传输中花费的时间。否则,由于您是通过 Socket 自行管理请求,因此可以通过检查系统计时器并计算差值来测量任意两个时刻之间的经过时间。例如:
public void sendHttpRequest(byte[] requestData, Socket connection) {
long startTime = System.nanoTime();
writeYourRequestData(connection.getOutputStream(), requestData);
byte[] responseData = readYourResponseData(connection.getInputStream());
long elapsedTime = System.nanoTime() - startTime;
System.out.println("Total elapsed http request/response time in nanoseconds: " + elapsedTime);
}
此代码将测量从您开始写出请求到完成接收响应并打印结果的时间(假设您实现了特定的读/写方法)。