Guybrush Threepwood Geschrieben 2. Dezember 2002 Teilen Geschrieben 2. Dezember 2002 Hi, ich habe einen C Client und einen Perl Server, beide kommunizieren über Windowssockets miteinander. Der Server läuft die ganze Zeit und wartet auf eine Verbindungsanfrage, der Client versucht wenn er gestartet wird, mit dem Server verbindung aufzunehemen und sendet ihm bei Erfolg bestimmte Daten und wartet dann auf eine Antwort vom Server. Der Server überprüft die Daten vom Client und holt sich anhand dieser andere aus einer Datenbank. Diese Daten werden dann aneinandergehängt und sollen an den wartenden Client geschickt werden. Nur komischerweise erhalte ich beim Client meistens (nicht immer!!! manchmal klappts) die Meldung das die Verbindung vom Remoute-Computer zurückgesetzt wurde, nehme ich jetzt die Datenbankabfragen raus (die funktion dauer nur ein bis zwei sekunden) dann klappts immer.:confused: Weiß irgendwer woran das liegen kann? Gruß Guybrush Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 2. Dezember 2002 Teilen Geschrieben 2. Dezember 2002 Ich vermute einen Timeout seitens des Servers. Was passiert, wenn der Server anstelle des Datenbankzugriffs einige Sekunden wartet? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Net-srac Geschrieben 2. Dezember 2002 Teilen Geschrieben 2. Dezember 2002 Sendet der Server die Daten sofort, oder wartet er bis der Puffer voll ist? Hast du mal mit nem Sniffer geschaut wie die Datenpakete zw. Client und Server verlaufen? (z.B. Eterreal) Ich hatte mal ein ähnliches Problem mit Perl Client/Server. Das ließ sich durch einen autoflush() Eintrag von Perl lösen. Anderenfalls wartet das Programm (Client/Server) so lange bis die zu sendenen Daten einen Puffer gefüllt haben und schicken sie dann ab. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 3. Dezember 2002 Autor Teilen Geschrieben 3. Dezember 2002 Ich vermute einen Timeout seitens des Servers. Was passiert, wenn der Server anstelle des Datenbankzugriffs einige Sekunden wartet? Das hab ich auch vermutet, aber wenn ich die Funktion auskommentiere und ein sleep dahinsetzte kann ich mindestens 20 sekunden warten und die Daten werden trotzdem erfolgreich gesendet. Hast du mal mit nem Sniffer geschaut wie die Datenpakete zw. Client und Server verlaufen? (z.B. Eterreal) Wie genau mache ich das denn? Ich habe vor dem senden einfach mal autoflush() geschrieben, aber das hat irgendwie nichts gebracht, außer das er an der Stelle immer aus dem Programm springt. Muß ich noch irgendwas in den Klammern übergeben? Achso, innerhalb der Datenbankfunktion die ich aufrufe kann ich an jeder Stelle was an den Client senden, sobald sie endet aber nicht mehr. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 3. Dezember 2002 Autor Teilen Geschrieben 3. Dezember 2002 Ich habe jetzt festgestellt das wenn ich beide PC neustarte die Übertragung das erste mal klappt und danach wieder nicht. Also liegt es anscheinend wirklich an irgendwelchen Puffern die irgendwie gelert werden müsssen, nur weiß ich nicht wie.? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 3. Dezember 2002 Autor Teilen Geschrieben 3. Dezember 2002 Ich hab hier noch ne etwas genauere Fehlermeldung gefunden, kann mir aber trotzdem nicht erklären warum der Fehler beim Client auftritt. The virtual circuit was reset by the remote side executing a "hard" or "abortive" close. The application should close the socket as it is no longer usable. On a UDP datagram socket this error would indicate that a previous send operation resulted in an ICMP "Port Unreachable" message. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.