php.de

Zurück   php.de > php.de Intern > Off-Topic Diskussionen

Off-Topic Diskussionen Mach mal Pause vom Programmieren!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.02.2008, 17:57  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard java -> Connection reset by peer: socket write error

hi,

ich bekomme bei sockets in Java folgende fehlermeldung:

Zitat:
Connection reset by peer: socket write error
was ich mir ergoogelt habe, war das der client die verbindung beendet hat. gut, bei mir ist der client ein drucker der per TCP/IP angesprochen wird. normalerweise sollte dieser auch bei einem fehler nicht die verbindung beenden. gibts sonst noch gründe warum diese SocketException geworfen wird?

werd nachher noch mehr zu schreiben....

gruß
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.02.2008, 22:40  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

so also, das problem bezieht sich auf einen ticket drucker. das ganze muss in java sein, damit wir einen lokalen drucker ansprechen können.
die oben genannte fehlermeldung tritt nicht immer auf (gerne druckt er auch ein paar mal 100 tickets am stück durch), aber proportional zur druckerbelegung öfters.
danach kann ich keine weiteren druckaufträge versenden, da hilft ENTWEDER ein neustarten von java+browser oder ein neustarten des druckers (wobei wenn ich den drucker neustarten muss, hilft ein neustarten von java nicht. andersrum wenn ich java neustarten muss, hilft ein druckerneustart nicht).

den code kann ich euch am montag posten, wenn erwünscht. die sache ist halt, dass er funktioniert, nur manchmal kommt oben genannte fehlermeldung währende eines druckauftrags. (übermittelte tickets werden allerdings weiter gedruckt da gecached)

abfragen kann ich zwar statusmeldungen des druckers, manchmal jedoch antwortet er nicht. da ich mich noch nicht mit den non-blocking streams in java auseinandergesetzt habe, ist das applet natürlich dann blockiert.
bei diesem fehler ist allerdings die verbindung gekappt, weswegen ein abfragen des status natürlich nur eine weitere exception wirft die besagt das keine verbindung besteht.....

ideen?
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline   Mit Zitat antworten
Alt 10.02.2008, 18:01  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.654
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo brian,

ich kenne das Problem nicht aus meiner Erfahrung, deswegen stelle ich mal ein paar Fragen:

- welche JAVA-Version verwendest du?
- wird die Kommunikation zwischen Server und Drucker, oder zwischen
Client(-Applet) und Drucker initiiert?
- wie sprichst du den Drucker an?
- verwendest du soetwas wie Connection-Pooling, oder andere Pooling-Varianten?
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 10.02.2008, 18:28  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von dr.e.
Hallo brian,

ich kenne das Problem nicht aus meiner Erfahrung, deswegen stelle ich mal ein paar Fragen:

- welche JAVA-Version verwendest du?
nach update normalerweise die neuste, welche version es ist kann ich dir erst am montag sagen.

Zitat:
Zitat von dr.e.
- wird die Kommunikation zwischen Server und Drucker, oder zwischen
Client(-Applet) und Drucker initiiert?
das applet spricht den drucker direkt an.

Zitat:
- wie sprichst du den Drucker an?
tcp/ip über lan per socket + BufferedInputStream

Zitat:
- verwendest du soetwas wie Connection-Pooling, oder andere Pooling-Varianten?
nein.

tritt übrigens nicht nur bei einem drucker auf.
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline   Mit Zitat antworten
Alt 10.02.2008, 19:02  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.654
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo brian,

ich habe mir mal den Quelltext angesehen und nichts besonderes für mich feststellen zu können. Dort wird einfach eine "normale" Socket-Verbindung verwendet, die dem Standard-TCP-Timeout des verwendeten Betriebssystems unterliegt, sofern nichts anderes auf der Büchse konfiguriert. Auch die API-Doku hat mich keine Fehler erkennen lassen.


Zitat:
das applet spricht den drucker direkt an.
Das könnte ein Problem sein, da hier der Browser noch mitspielt und dir in die Suppe spucken kann. Ich würde zum Test diese Komponente mal ausschalten und das Applet auf der CommandLine ausführen.


Sorry, wenn ich nichts produktives beitragen kann, für mich sieht das an sich funktionsfähig aus.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 10.02.2008, 20:07  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von dr.e.
Zitat:
das applet spricht den drucker direkt an.
Das könnte ein Problem sein, da hier der Browser noch mitspielt und dir in die Suppe spucken kann. Ich würde zum Test diese Komponente mal ausschalten und das Applet auf der CommandLine ausführen.
dachte ich mir auch schon, mehrere browser getestet, aber über cli hab ichs noch nicht probiert, werd ich dann morgen mal nachholen und das ergebnis berichten.
die sache ist halt, es muss über den browser laufen.

Zitat:
Zitat von dr.e.
Sorry, wenn ich nichts produktives beitragen kann, für mich sieht das an sich funktionsfähig aus.
kein thema ich kanns mir ja auch nicht erklären und verdächtige die ganze zeit schon den drucker. und es funktioniert ja auch, nur kommt _manchmal_ dieser fehler. das ärgerliche ist halt, das ich entweder java oder den drucker neustarten muss, somit ist jede fehlerbehandlung und jede wiederholung sinnlos (aber meistens eben den drucker. ich denke manchmal hängt sich java auf weil die verbindung mitten während der übertragung gekappt wurde).

ich setze mich morgen auch mal mit non-blocking streams in java auseinander, da der drucker nicht immer antwortet.

trotzdem vielen dank!
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline   Mit Zitat antworten
Alt 11.02.2008, 17:13  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

hi,

kannst du mir bestätigen, dass diese exception jederzeit geworfen werden kann, also unabhängig von zugriffen auf den socket?
ich bekomme nämlich merkwürde debug meldungen. normalerweise sollen die so aussehen:

Zitat:
BEGIN Ticket 138
Logo
Logo
Logo
Logo
END Ticket 138
BEGIN Ticket 139
Logo
Logo
Logo
Logo
END Ticket 139
jetzt hab ich aber folgende bekommen:

Zitat:
BEGIN Ticket 140
Logo
Logo
Logo
Logo
Fehler: IOException
java.net.SocketException: Connection reset by peer: socket write error
END Ticket 140
BEGIN Ticket 141
Logo
Logo
Logo
Logo
--------------------------------------------------
Applet init()
network: Verbindung von socket://192.168.253.210:9100 mit Proxy=DIRECT wird hergestellt
END Ticket 141
BEGIN Ticket 142
Logo
Logo
Logo
Logo
END Ticket 142
BEGIN Ticket 143
Logo
Logo
Logo
Logo
Fehler: SocketException
java.net.ConnectException: Connection timed out: connect
--------------------------------------------------
Applet init()
network: Verbindung von socket://192.168.253.210:9100 mit Proxy=DIRECT wird hergestellt
Fehler: SocketException
java.net.ConnectException: Connection timed out: connect
--------------------------------------------------
Applet init()
network: Verbindung von socket://192.168.253.210:9100 mit Proxy=DIRECT wird hergestellt
Fehler: IOException
java.net.SocketException: Connection reset by peer: socket write error
BEGIN Ticket 41
END Ticket 41
wie du siehst, wird während ticket 140 besagte Exception geworfen. generell ruft der catch block dann wieder init() auf die wieder eine verbindung herstellt (bzw. soll) und diese ruft wiederrumm process_tickets() auf die an der abgebrochenen stelle weitermachen soll.

hier aber das phänomen

Zitat:
Fehler: IOException
java.net.SocketException: Connection reset by peer: socket write error
END Ticket 140
BEGIN Ticket 141
Logo
Logo
Logo
Logo
--------------------------------------------------
Applet init()
network: Verbindung von socket://192.168.253.210:9100 mit Proxy=DIRECT wird hergestellt
END Ticket 141
wie du siehst macht java nach der exception mit einem codeblock (ausgabe von "END ticket") weiter der im try block obendrübersteht.
danach wirds noch schlimmer, END ticket, was immer noch im try block steht, kommt nach dem aufruf von init().
schlussendlich gehts dann noch mit dem ticket 41 statt 141 weiter.

nun vllt. wars ein einmaliger java "ausrutscher", doch die merkwürdigkeiten häufen sich....ich habe das applet gerade neu kompiliert und probiere noch ein bisschen rum

edit> diese meldung müsste java doch eigentlich bringen wenn es das TCP/IP reset signal bekommt odeR?
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline   Mit Zitat antworten
Alt 12.02.2008, 09:23  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.654
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo brian,

Zitat:
Connection reset by peer
Das deutet meiner Meinung nach auf einen Connection-Abbruch auf Drucker-Seite hin.

Zitat:
Connection timed out: connect
Das findest du im Normalfall dann im Log, wenn keine Verbindung aufgebaut werden kann, oder einen offene Socket-Verbindung nach dem Timeout geschlossen wird. Da das beim init() passiert tippe ich auf letzteres.

Ich schlage vor, du implementierst zum Test einen "Server-Dienst" in JAVA, der dir die Ausgaben des Applets loggt und einfach nur einen blöden Socket aufbaut. So kannst du sauber testen, ob das Applet probleme macht, oder der Drucker. Für meinen Geschmack ist der Drucker das Problem.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 12.02.2008, 09:33  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von dr.e.
Hallo brian,

Zitat:
Connection reset by peer
Das deutet meiner Meinung nach auf einen Connection-Abbruch auf Drucker-Seite hin.
ists wohl auch, bin eben im drucker manual über eine funktion gestolpert nachdem ich in dem doument mal nach RST gesucht hab:

Zitat:
IDLE TIMEOUT COMMAND - <idt#>
This command permanently stores the timeout value (#) in flash. The value (#) can range from 1-65535 seconds. The printer will reset the open connection after # seconds of inactivity if another application is seeking to communicate with the printer. In this case, a reset (RST packet) will be sent to the open connection, and any previously stored data will be flushed. The default setting is 30 seconds.
die frage ist nur, warum er das auch bei meinem test drucker macht der immer maximal einen auftrag sendet. wäre aber eine erklärung warum das häufiger bei größeren aufträgen auftritt.

auf jeden fall danke, werd mich mit dem hersteller in verbindung setzen.
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Spionageversuch? Code-Injection? saibot PHP-Fortgeschrittene 24 06.10.2007 02:07
xmlrpc-epi kompilieren [gelöst] freq.9 Server, Hosting und Workstations 4 24.07.2005 21:45
Socket error Eddaholzbein PHP Tipps 2005 1 25.04.2005 13:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
connection reset by peer: socket write error, java.net.socketexception: connection reset by peer: socket write error, connection reset by peer socket write error, socket write error, connection reset by peer, reset by peer, java socket write error, java.net.socketexception connection reset by peer socket write error, socket connection reset, minecraft connection reset by peer socket write error, connection reset, java connection reset, \connection reset by peer: socket write error\, java.net.socketexception: connection reset, java connection reset by peer, connection reset by peer java, java.net.socketexception: connection reset by peer: connect, java socket drucker, socket write error java, java connection reset by peer: socket write error

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:22 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.