【发布时间】:2013-01-04 08:32:38
【问题描述】:
我正在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 等)收到连接重置?!
【问题讨论】:
标签: java https network-programming socketexception