Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probleme de socket

5 réponses
Avatar
hatoug
bonjour, j ouvre un fichier avec le code suivant, et tout semble
fonctionner mais j ai quand meme une erreur de socket
qq un aurait il une idee ?

Merci

try {
fis = new FileInputStream(request.getParameter("chemin"));


//un buffer de 64 Kilo-Octets
byte[] buf = new byte[64000];
int bytesRead;
while ((bytesRead = fis.read(buf)) > 0)
{
try
{
out.write(buf, 0, bytesRead);
}
catch (java.net.SocketException ex)
{
System.out.println("Pb : DocAssoServlet : " +
ex.getMessage());
ex.printStackTrace();
}
}
} finally {
if(fis != null) fis.close();
}


java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffe
r.doWrite(InternalOutputBuffer.java:668)
at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedO
utputFilter.java:171)
at org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputB
uffer.java:523)
at org.apache.coyote.Response.doWrite(Response.java:524)
at org.apache.coyote.tomcat4.OutputBuffer.realWriteBytes(OutputBuffer.ja
va:384)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:348)
at org.apache.coyote.tomcat4.OutputBuffer.writeBytes(OutputBuffer.java:4
11)
at org.apache.coyote.tomcat4.OutputBuffer.write(OutputBuffer.java:398)
at org.apache.coyote.tomcat4.CoyoteOutputStream.write(CoyoteOutputStream
.java:110)
at specifricoh.DocAssoServlet.doGet(DocAssoServlet.java:40)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:260)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:
2415)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatche
rValve.java:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:22
3)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:432)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ssConnection(Http11Protocol.java:386)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java
:534)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:530)
at java.lang.Thread.run(Thread.java:536)

5 réponses

Avatar
jerome moliere
wrote:

bonjour, j ouvre un fichier avec le code suivant, et tout semble
fonctionner mais j ai quand meme une erreur de socket
qq un aurait il une idee ?

<snip code>

par hasard l'utilisation de ce stream ne se ferait pas au sein d'un
produit du genre disons Tomcat ? :)
et le fichier ne serait pas plutot une socket ?
donc en lieu et place du fileinputstream utiliser un stream plus adapte
(cf tutoriaux sur la prog reseau) et cela va mieux se passer....
ou utiliser une api du type commons client (projet jakarta)

Jerome

--
Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003
http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean13—82212111941

Avatar
Christophe M
jerome moliere wrote:

wrote:

bonjour, j ouvre un fichier avec le code suivant, et tout semble
fonctionner mais j ai quand meme une erreur de socket
qq un aurait il une idee ?

<snip code>

par hasard l'utilisation de ce stream ne se ferait pas au sein d'un
produit du genre disons Tomcat ? :)
et le fichier ne serait pas plutot une socket ?
donc en lieu et place du fileinputstream utiliser un stream plus adapte
(cf tutoriaux sur la prog reseau) et cela va mieux se passer....
ou utiliser une api du type commons client (projet jakarta)

Jerome

Heu ouais, mais non :-p

C'est son "out" qui est la socket (je pense pas qu'on puisse ouvrir un
FileInputStream avec "http://mamachine" comme paramètre ;-) ( Et pis
c'est sur un socketWrite() l'exception )

Out doit surement être récupéré depuis le response , n'est-ce pas Hatoug ?
Par contre, le "Connection reset by peer" me ferait dire que le
navigateur a été fermée avant d'avoir reçu tout le contenu du fichier.
(Navigateur est un terme générique pour désigner n'importe quelle
application faisant du http avec le serveur tomcat )



Christophe


Avatar
Unknown
while ((bytesRead = fis.read(buf)) > 0)
première erreur, test != -1 et pas 0, zéro signifie rien de lu et pas

plus rien à lire.

Avatar
Bruno Tignac
Salut,

le contenu de ce fichier est de quel type ? As-tu precise une taille
de retour au client qui va lire le contenu ?

Peut etre que le client considere avoir recu tout le flux et coupe la
socket, ce qui produirait le probleme rencontre.

Bruno

wrote:

bonjour, j ouvre un fichier avec le code suivant, et tout semble
fonctionner mais j ai quand meme une erreur de socket
qq un aurait il une idee ?

Merci

try {
fis = new FileInputStream(request.getParameter("chemin"));


//un buffer de 64 Kilo-Octets
byte[] buf = new byte[64000];
int bytesRead;
while ((bytesRead = fis.read(buf)) > 0)
{
try
{
out.write(buf, 0, bytesRead);
}
catch (java.net.SocketException ex)
{
System.out.println("Pb : DocAssoServlet : " +
ex.getMessage());
ex.printStackTrace();
}
}
} finally {
if(fis != null) fis.close();
}


java.net.SocketException: Connection reset by peer: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at

java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)

at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at

org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffe

r.doWrite(InternalOutputBuffer.java:668)
at

org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedO

utputFilter.java:171)
at

org.apache.coyote.http11.InternalOutputBuffer.doWrite(InternalOutputB

uffer.java:523)
at org.apache.coyote.Response.doWrite(Response.java:524)
at

org.apache.coyote.tomcat4.OutputBuffer.realWriteBytes(OutputBuffer.ja

va:384)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:348)
at

org.apache.coyote.tomcat4.OutputBuffer.writeBytes(OutputBuffer.java:4

11)
at

org.apache.coyote.tomcat4.OutputBuffer.write(OutputBuffer.java:398)

at

org.apache.coyote.tomcat4.CoyoteOutputStream.write(CoyoteOutputStream

.java:110)
at specifricoh.DocAssoServlet.doGet(DocAssoServlet.java:40)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at

org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl

icationFilterChain.java:247)
at

org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF

ilterChain.java:193)
at

org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV

alve.java:260)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex

t.invokeNext(StandardPipeline.java:643)
at

org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav

a:480)
at

org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)


at

org.apache.catalina.core.StandardContextValve.invoke(StandardContextV

alve.java:191)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex

t.invokeNext(StandardPipeline.java:643)
at

org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav

a:480)
at

org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)


at

org.apache.catalina.core.StandardContext.invoke(StandardContext.java:

2415)
at

org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j

ava:180)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex

t.invokeNext(StandardPipeline.java:643)
at

org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatche

rValve.java:170)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex

t.invokeNext(StandardPipeline.java:641)
at

org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j

ava:172)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex

t.invokeNext(StandardPipeline.java:641)
at

org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav

a:480)
at

org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)


at

org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal

ve.java:174)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex

t.invokeNext(StandardPipeline.java:643)
at

org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav

a:480)
at

org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)


at

org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:22

3)
at

org.apache.coyote.http11.Http11Processor.process(Http11Processor.java

:432)
at

org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce

ssConnection(Http11Protocol.java:386)
at

org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java

:534)
at

org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP

ool.java:530)
at java.lang.Thread.run(Thread.java:536)


Avatar
Alwin
Ton out est-il de type response.getOutputStream() ?

Voici un morceau de code qui tourne très bien chez moi.

private static final int BUFFER_SIZE = 64*1024;

public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
String fileName = request.getParameter("fileName");
String type = getServletContext().getMimeType("fileName);
response.setContentType(type);
InputStream in = new FileInputStream(fileName);
OutputStream out = response.getOutputStream();
byte[] buffer = new byte[BUFFER_SIZE];
while( in.read(buffer) != -1 ) {
out.write(buffer);
}
out.flush();
in.close();
}

---
Alwin - ZX636-R