Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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.

Geschrieben
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.

Geschrieben

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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...