2024年6月3日发(作者:)
常出现的Connection reset by peer: 原因可能是多方面的,不过更常见的原因是:
①:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;
②:客户关掉了浏览器,而服务器还在给客户端发送数据;
③:浏览器端按了Stop
通常原因为:远程主机上对等方应用程序突然停止运行,或远程主机重新启动,或远程主机
在远程方套接字上使用了“强制”关闭 (参见setsockopt(SO_LINGER))。另外,在一个或
多个操作正在进行时,如果连接因“keep-alive”活动检测到一个失败而中 断,也可能导致此
错误。此时,正在进行的操作以错误码WSAENETRESET失败返回,后续操作将失败返回错
误码WSAECONNRESET。
但是如果频繁出现,就表示很 多客户端连接到Apache服务器的响应时间太长了,可能是
网络的问题或者服务器性能问题。
网友分析:
楼主 要从一个被屏蔽的网站上下载一些东西,于是写了一个Servlet,将它传到了一台境外的
服务器上.
让这台服务器去下载指定的资源,然后再回传给我.相当于一个代理吧.
JAVA code
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String url = ameter("url"); //得
到要下载的资源的URL.
if (!OrEmpty(url)) {
n(url);
URL u = new URL(url);
URLConnection conn = nnection();
try { ///把响应头设置成一样的.
for (
derFields()
.entrySet()) {
if (m != null && () != null &&
ue() != null
&& ue().size() > 0) {
der((),
ue().get(0));
}
}
} catch (Exception e) {
// TODO: handle exception
tackTrace();
(e);
}
InputStream in = utStream(); //
从 connection得到inputstream
OutputStream out =
putStream(); //得到向客户端的输出流
try {
IOUtils
.wrITe(utStream(),
response
.getOutputStream()); //写数
据.
} catch (Exception e) {
tackTrace();
// TODO: handle exception
(e);
if (in != null) {
();
}
if (out != null) {
();
}
}
}
}
()代码如下:
JAVA code
/**
* 从input里面读取数据然后写入output,读完后自动关闭流。


发布评论