Problem: "Software caused connection abort: socket write error"

cavecanem

Grünschnabel
Hallo zusammen

ich habe n ziemlich ärgerliches problem ...

ich schreibe zur zeit ein Java Applet, das mittels InputStream, DataOutputStream und Socket eine Verbindung aufbaut, und vorher in einer liste selektierte Daten hochlädt.

Das Applet läuft soweit sehr gut, kompiliert auch fehlerlos, aber nachdem das Applet die Verbindung aufgebaut hat, renne ich bei folgendem codestück in die catch ...

Code:
	int j = 0;
	while (j < loop) {
		try {		
			fileInputStream.read(buff, 0, uplPacketSize);
			out.write(buff, 0, uplPacketSize);
			out.flush();
		     } catch (IOException ex) {
			showMsg("Fehler: Übertragungsfehler");
			throw ex;
		    }
	j++;

und ich erhalte folgenden Fehler:


java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at java.io.DataOutputStream.write(Unknown Source)
at uploadApplet.UploadApplet.uploadFiles(UploadApplet.java:447)
at uploadApplet.UploadApplet.bUpload_action(UploadApplet.java:249)
at uploadApplet.UploadApplet.access$3(UploadApplet.java:243)
at uploadApplet.UploadApplet$4.actionPerformed(UploadApplet.java:115)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
............


hat irgendeiner von euch einen socket error behandelt ? und wenn ja, wie? :)
 
Scheint ein Bereichsfehler zu sein.

Versuch's mal damit:

Code:
int i;
while ((i = in.read()) >= 0) {
  out.write(i);
}
 
Ich hab zwar keine Ahnung von Java, aber den Socketfehler kenn ich, also geb ich mal meinen Senf dazu :)

"Software caused connection abort:" ist ein Socket error - i.a. kommt er dann wenn die Gegenseite den Socket dicht gemacht hat weil du z.B. ungültige Daten geschickt hast.
zB. bei HTTP Verbindung: wenn deine gesendete HTTP Datei grösser ist als als im header angegeben macht der Browser den Socket zu - wennn du dann noch senden willst kommt dieser Fehler.
Dieser Fehler kann aber sehr viele Ursachen haben. Prüfe am besten ob die Gegenseite überhaupt noch Daten erwartet und ob der Socket nicht schon geschlossen wurde. (der Fehler kann also auch schon viel weiter vorne liegen oder im Übertragungsprotokoll)
 
Zurück