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 (> m :

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,读完后自动关闭流。