WinSock Verbindung wird abgebrochen
-
Hallo,
ich habe ien riesen Problem und weiß einfach nicht mehr weiter.
Es würde mich sehr freuen wenn ihr mir weiterhelfen könntetVorhaben:
Ich möchte einen Client schreiben der einem Server Daten schickt. Der Server kann nur Datenpakete verarbeiten, die kleiner als 487 Bytes sind (max PDU Größe). Wenn ich also größere Pakete verschicken will muss ich diese aufteilen.Problem:
- ich Teile dem Server mit, wie groß das Datenpaket ist
- dann Schicke ich den ersten Teil des Paketes los
- der Server bestätigt
(wenn ich das ganze mit einem Sniffer anschaue sehe ich bei diesem Paket
Window Update als Beschreibung)
- daraufhin schickt der Client (mein eigener Rechner) ein Reset-Flag und unterbricht die VerbindungEs gibt Programme, die genau auf diese Weise mit dem Server kommunizieren.
Es stimmen sowohl Antwort des Servers und Anfrage des Clients bis zu diesem Paket überein. Es muss meiner Meinung nach also ein WinSockproblem bzw -Einstellung sein, die das verursacht.Aber warum? Wie kann ich das in den Griff bekommen?
Ich hoffe, dass ich mich einigermaßen verständlich ausgedrückt habe, falls nicht würde ich mich freuen, wenn ihr mir kurz bescheid geben könntet.
Ich bin für jede Hilfe, Info, Anregung.... wirklich sehr sehr dankbar
vielen Dank im voraus Gruß
Tupo13
-
Bei UDP gibt es gar keine Verbindung. Deshalb kann sie auch nicht unterbrochen werden.

-
Wie "hmmmmmm" schon gesagt hat: Bei UDP gibt es keine Verbindung und auch keine Garantie das die Daten überhaupt ankommen....
Und bei TCP kannst Du aus Deinem Programm heraus gar nicht beeinflussen, wieviele Daten in einem Paket versendet werden :p
-
@hmmmmmmmmmmm
Danke für deine schnelle Antwort.Ich verwende kein UDP ich verwende TCP/IP
Mien eigener Rechner bricht die Verbindung ab, wenn ich die Kommunikation mit einem Netzwerksniffer anschaue, dann sehe ich ,dass das RESER-Flag (TCP) von meinem Rechner gesetzt wurde und somit wird die Verbindung abgebrochen.
Gruß Tupo13
-
@ Jochen Kalmbach
Danke für deine Antwort.Der Server verwendet ein PDU-Protokoll (auf TCP aufgesetzt also in den TCP-Daten)
Die Kommunikation sieht vereinfacht z.B. folgendermaßen aus
- Socket verbinden
- Ich: hallo ich möchte dir einen Baustein der Länge 1023 bytes Senden
- Server: Gib mir den Anfang des Bausteins als0 25 Byte PDU Header + 462 Bytes der Bausteindaten.
- Ich: sende den Anfang des Bausteins
----
Danach bricht der Client (also mein rechner die Verbindung ab)es sollte aber so weitergehen
- Server gib mir den nächsten Teil des Bausteins
........- falls nichts mehr folgt: Server Baustein übertragen
Wenn ich einen Baustein sende der kleiner als 462 Bytes ist, dann Funktioniert alles einwandfrei
-
Hallo
kennt sich jemand mit der Funktion setsockopt aus?
wie Verwende ich sie, kann es sein, dass ich da etwas setzen muss?
Gruß Tupo13
-
Sehr unwahrscheinlich.
-
Tupo13 schrieb:
@ Jochen Kalmbach
Danke für deine Antwort.Der Server verwendet ein PDU-Protokoll (auf TCP aufgesetzt also in den TCP-Daten)
Die Kommunikation sieht vereinfacht z.B. folgendermaßen aus
- Socket verbinden
- Ich: hallo ich möchte dir einen Baustein der Länge 1023 bytes Senden
- Server: Gib mir den Anfang des Bausteins als0 25 Byte PDU Header + 462 Bytes der Bausteindaten.
- Ich: sende den Anfang des Bausteins
----
Danach bricht der Client (also mein rechner die Verbindung ab)es sollte aber so weitergehen
- Server gib mir den nächsten Teil des Bausteins
........- falls nichts mehr folgt: Server Baustein übertragen
Wenn ich einen Baustein sende der kleiner als 462 Bytes ist, dann Funktioniert alles einwandfrei
Die ganzen Sachen, sind die selber programmiert oder ist das ne Funktion von Windows? Wenn das selber programmiert ist, dann schick mal den COde, denn das müsste eigentlich funktionieren.
mfg.