Guybrush Threepwood Geschrieben 2. Dezember 2002 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
Klotzkopp Geschrieben 2. Dezember 2002 Geschrieben 2. Dezember 2002 Ich vermute einen Timeout seitens des Servers. Was passiert, wenn der Server anstelle des Datenbankzugriffs einige Sekunden wartet?
Net-srac Geschrieben 2. Dezember 2002 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.
Guybrush Threepwood Geschrieben 3. Dezember 2002 Autor 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.
Guybrush Threepwood Geschrieben 3. Dezember 2002 Autor 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.?
Guybrush Threepwood Geschrieben 3. Dezember 2002 Autor 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.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden