我正在编写一个简单的程序,Java
它接收来自浏览器(如 Firefox)的连接请求,解析统计信息请求,然后将请求转发到原始目的地。然后程序从目的地读取响应,解析响应以获取统计信息,然后将响应转发给浏览器。
该操作的伪代码如下:
// Accept connection from browser and read request
1. Socket browserConnection = serverSocket.accept();
2. browserConnection.getInputStream().read(buffer);
3. SocketInetAddress destInetAddress = parseHttpRequest(buffer);
// Connect to destination and forward request
4. Socket destConnection = new Socket(destInetAddress);
5. destConnection.getOutputStream().write(buffer);
// Read response from destination
6. destConnection.getInputStream().read(buffer);
7. parseHttpResponse(buffer);
// Forward response to browser
8. browserConnection.getOutputStream().write(buffer);
这适用于 HTTP 连接,但我正在connection reset
使用 HTTPS 连接。
注意:我知道 HTTP 和 HTTPS 连接之间的区别,与 HTTP 不同,它不仅仅是一次性的send
,然后是一些receives
. 我的 HTTPS 代码reads
尽可能多,也writes
尽可能多。
为什么我尝试连接的任何 HTTPS 服务器(例如https://www.google.com、https://www.comodo.com等)都会重置连接?!