Seite 1 von 1

SendNetworkString

Verfasst: 12.01.2018 10:00
von stevie1401
Ich benutze bei meinem kleinen Server
Ergebnis = SendNetworkString(Verbindung, String$ [, Format])

"Ergebnis" zeigt mir immer an, dass der String gesendet wurde. Das ist aber ab und zu nicht der Fall.
Kann es sein, dass dann gerade die "Leitung" vom TCP geblockt wurde?
Wie kann ich sicher erfahren, ob ein String beim Client angekommen ist?

Re: SendNetworkString

Verfasst: 12.01.2018 10:30
von RSBasic
Eigentlich ist TCP genau dafür da, um sicherzustellen, dass die gesendeten Pakete ankommen.
Ansonsten kann dein Client nach Erhalt des Paketes einfach ein Bestätigungspaket zurücksenden. Dann kannst du auch gleich UDP verwenden, weils schneller ist.

Re: SendNetworkString

Verfasst: 12.01.2018 10:35
von Kiffi
ich würde eigentlich auch eher schauen, ob der Fehler nicht auf der Seite des Empfängers liegt.

Grüße ... Peter

Re: SendNetworkString

Verfasst: 12.01.2018 10:37
von STARGÅTE
stevie1401 hat geschrieben:"Ergebnis" zeigt mir immer an, dass der String gesendet wurde.
Nein, das stimmt leider nicht.
Das Ergebnis zeigt dir nur an, dass der String erfolgreich in den Netzwerk-Puffer kopiert wurden und zum Versenden bereit steht.
Ich verweise an dieser Stelle immer gerne auf folgende Diskussion:
http://www.purebasic.fr/german/viewtopi ... 57#p307857
stevie1401 hat geschrieben:Kann es sein, dass dann gerade die "Leitung" vom TCP geblockt wurde?
Was meinst du mit geblockt?
stevie1401 hat geschrieben:Wie kann ich sicher erfahren, ob ein String beim Client angekommen ist?
Da das TCP-Protokoll bereits ein Handshake enthält, kommen gesendete Daten immer an, außer einer der beiden NetzwerkPuffer läuft voll oder einer verlässt die Verbindung.
Um sicher zu gehen, sollte der Client einfach etwas zurück schicken (zB Prüfsumme des erhaltenen Strings), die der Server abgleicht.

Re: SendNetworkString

Verfasst: 12.01.2018 21:27
von HeX0R
Um sicher zu gehen, sollte der Client einfach etwas zurück schicken
Eigentlich ist das unnötig, man muss allerdings ein wenig WinAPI benutzen, um zu wissen was das eigentliche Problem ist.
Siehe mögliche Fehlermeldungen hier:
https://msdn.microsoft.com/de-de/librar ... s.85).aspx

Mit "geblockt" meinte er übrigens WSAEWOULDBLOCK, das sieht man in der Tat gelegentlich

Re: SendNetworkString

Verfasst: 15.01.2018 09:59
von stevie1401
Erst einmal danke für eure Tips.
Ich suche verzweifelt einen funktionierenden Code für einen TCP-Server, der mit Threads läuft. Ich bekomme das mit dem Threads und dem Senden einfach nicht zuverlässig hin.

Re: SendNetworkString

Verfasst: 15.01.2018 10:43
von mk-soft
Der Code ist ein wenig heftig, zeigt aber die Verwendung von Threads und die Verwaltung von Clients.

Link: http://www.purebasic.fr/german/viewtopi ... =8&t=29743

Re: SendNetworkString

Verfasst: 15.01.2018 14:12
von stevie1401
Jo, sieht sehr "massiv" aus. Ich schaue mal, ob ich davon irgendetwas verstehe.
Erst einmal vielen Dank!

Re: SendNetworkString

Verfasst: 23.01.2018 00:21
von stevie1401
Den Servercode verstehe ich leider überhaupt nicht, da nicht beschrieben ist, was da eigentlich stattfindet.
Wo fängt das Programm an?
Wo ist da die Schleife?
Wo sehe ich, wann welche Daten reinkommen und was dann mit ihnen passiert?