|
| Autor |
Nachricht |
nicok Poster

Anmeldedatum: 15.05.2008 Beiträge: 161
|
Winsock größere Packete übertragen
Verfasst am: 20.07.2008, 10:13 |
|
|
Hi,
ich möchte über Winsocks ein größere Packet übertragen. Nun das problem ist das dieses Paket eigentlich eine Variable ist und schonmal keine Datei (bei Dateien hätte ich einfach einen von den tausenden beispiel src genommen)
Also ich schätze ich muss die Variable immer in Stückchen einlesen und verschicken.
Aber wie sieht das code-technsich bei Server und Client aus? |
|
| |
|
 |
Marduk Überflieger

Anmeldedatum: 16.04.2008 Beiträge: 374
|
Verfasst am: 20.07.2008, 10:18 |
|
|
Schonmal geguckt wie einer dieser tausenden Beispiel src das Problem löst. Womöglich könnte man ja die Variable in eine Datei speichern und dann verschicken??  |
|
| |
|
 |
bla Coder

Anmeldedatum: 02.05.2008 Beiträge: 267
|
Verfasst am: 20.07.2008, 10:35 |
|
|
Visual Basic: [code]for i = 1 to kA step 20 winsock.send mid(string,i,20) next i[/code]
so viellt :p
und der andere part muss das dann iwie wieder zusammensetztn... viellt mit nem bestimmten zeichen vor den eigentlichen string, so dass der andere part das überprüft und wenn das zeichen da ist, wird es an die anderen stücke geheftet... so könnte ich mir das vorstellen |
|
| |
|
 |
nicok Poster

Anmeldedatum: 15.05.2008 Beiträge: 161
|
Verfasst am: 20.07.2008, 10:50 |
|
|
naja ich such ja grad nach einer anderen möglichkeit es ohne in ne datei zu packen zu machen..
also variable stückchenweise verschicken und dann zusammensetzen |
|
| |
|
 |
slayer616 Tutorial Leser

Anmeldedatum: 01.05.2008 Beiträge: 20
|
Verfasst am: 20.07.2008, 21:34 |
|
|
Winsock sendet nur 1024 Buchstaben, um sicher zugehen dass alles gesendet wird nehmen wir 1000 Buchstaben als Block
Dim zahl as Integer Dim deinString as String zahl = 1 do Server.SendData "Packet1" & Mid(deinString, zahl, 1000) zahl = zahl + 1000 ' Position ändern Loop until zahl + 1000 >= Len(deinString) Server.SendData "Packet2" & Right(DeinString, Länge - zahl + 1)
Jetzt muss dein Server das machen bei dataarrvial:
winsck.getdata data Rest = Right(data, Len(data) - 7) select case Left(data,7) case "Packet1" Variable = Variable & Rest Case "Packet Variable = Variable & Rest 'Jetzt kannst du deinen String verarbeiten
|
|
| |
|
 |
nicok Poster

Anmeldedatum: 15.05.2008 Beiträge: 161
|
Verfasst am: 21.07.2008, 15:07 |
|
|
Vielen Dank erstmal für deinen Source.
Ich hab einwenig drann gebastelt und herrausgefunden das ein DoEvent eingebauen werden muss, da sonst nur ein großes Paket versendet wird.
Außerdem funktioniert alles nur mit Pausen (Als Pause benutze ich Messageboxen)
Ich hab mal das Projekt hochgeladen:
http://uploaded.to/?id=p0ozxq
Hoffe mir kann jemand helfen.
Anmerkung: Sobald man die 2 Messageboxen wegnimmt verändern sich die Größen der jeweiligen Pakete. Einfach mal ausprobieren. Die Größe des aktuellen Pakets wird in der Listbox angezeigt! |
|
| |
|
 |
slayer616 Tutorial Leser

Anmeldedatum: 01.05.2008 Beiträge: 20
|
Verfasst am: 21.07.2008, 20:31 |
|
|
sry hätte ich erwähnen müssen... nimm die sleep API oder mach doch noch stabiler: Client fordert Packet an Server verschickt Packet1 Client empfängt und fordert das nächste Packet an Server verschickt dann packet2 usw.... |
|
| |
|
 |
nicok Poster

Anmeldedatum: 15.05.2008 Beiträge: 161
|
Verfasst am: 22.07.2008, 21:10 |
|
|
Danke so gehts =) |
|
| |
|
 |