[Vb & Winsock] Hoe efficïentste gebruiken?

Pagina: 1
Acties:

  • ddkiller0900
  • Registratie: Juli 2001
  • Laatst online: 22-08 19:34
Ik wil een Server/Client progamma maken maar tot nu toe heb ik geen efficiënte oplossing gevonden voor het versturen van commando's. Als ik op een button druk bij de client word er bv.
winsock1.senddata "Gebruikersnaam:" & gebruikersnaam
doorgestuurd en dan wil de server bv het adres, de postcode en de stad doorsturen. Ik heb het op de volgende manier gedaan:
Winsock1(intconnection).senddata "Straat:"& !straat 'wordt uit database gehaald
Winsock1(inctonnection).senddata "Postcode:"& !postcode
Winsock1(inctonnection).senddata "Stad:"& !stad
Wanneer ik deze manier gebruik komt het bij de client als volgt aan
Straat:abcPostcode:4534Stad:Piet
Hoe zorg ik ervoor dat alles netjes achter elkaar komt want anders kan ik geen controle doen welk commando verstuurd word of moet ik een andere manier gebruiken om zo commando's te geven aan de client?

  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
Je kan iets inbouwen dat de client een 'ack' verstuurd als hij de eerste data goed ontvangen heeft en de server pas iets verzend als hij een 'ack' binnenkrijgt.

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 14:43

johnwoo

3S-GTE

Of je terminate je velden met een bepaalde string :)
De WinSock layer optimaliseert je verschillende .SendData's namelijk tot 1 keer een packet verzenden.

4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1


  • ddkiller0900
  • Registratie: Juli 2001
  • Laatst online: 22-08 19:34
dat laatste is een goede mogelijkheid, thx Johnwoo

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 15-08 11:47

Sponge

Serious Game Developer

of je plakt er een vbCrlf achter. De meest optimale methode is 1 byte voor commando, 1-2 byte voor lengte van waarde, en daarna de waarde dus.. en zo door

[sub[zo kun je door alle "chunks" gaan, zoals het ook wel in het RIFF wave formaat heet ;)[/sub]

Verwijderd

1. Je kan velden maken met een vaste lengte en die achter elkeer plakken.

[veld1 6 bytes][veld2 12 bytes]


2. Je kan velden maken met verschillende lengtes en de lengte van elk veld ervoor zetten

n = lengte

[integer n][string n bytes][integer n][string n bytes]


3. Je kan velden met schijdingstekens verzenden en een record eindigen met een apparte character (newline)

[veld1],[veld2]{new line}


4. Je kan velden met schijdingstekens verzenden en een getal dat het aantal velden aangeeft

[aantal],[veld1],[veld2]


5. Net als in http Variabelen een waarde toekennen


commando?waarde1=tekstje&waarde2=blaatblaate&waarde3=1212324


Er zijn vast nog veel meer mogelijkheden te vinden.

[ Voor 10% gewijzigd door Verwijderd op 19-12-2002 19:00 ]


  • pkouwer
  • Registratie: November 2001
  • Laatst online: 07-10-2025
om hier even op in te haken: is het ook mogelijk om bijvoorbeeld een recordset terug te sturen ipv plain text ? Is dit dan niet makkelijker ?

  • Phenomenon
  • Registratie: December 2000
  • Laatst online: 01-04 13:18
Nee dat is niet mogelijk helaas :/

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 07-10-2025
Supervisor schreef op 19 december 2002 @ 19:54:
Nee dat is niet mogelijk helaas :/
hmm, dat is erg jammer. Maar je kunt dan wel een eigen 'recordset' creeren door bv puntkomma-gescheiden velden te gebruiken of zie ik dit verkeerd ?

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Of stuur de gegevens door in een XML formaat.

It’s nice to be important but it’s more important to be nice


  • Mart!
  • Registratie: Februari 2000
  • Laatst online: 23-08 14:17
pkouwer schreef op 19 December 2002 @ 19:39:
om hier even op in te haken: is het ook mogelijk om bijvoorbeeld een recordset terug te sturen ipv plain text ? Is dit dan niet makkelijker ?
Je kan in ieder geval je hele recordset in 1 keer in een twee-dimentionale array stoppen d.m.v. Recordset.getrows() en vervolgens komma-delimiten door middel van een for-lus en de join-methode, die van een 1-dimentionale array een string maakt gescheiden door een komma.
Dan ben je in ieder gaval knap efficient bezig denk ik.

Nog mooier zou een serialize-methode zijn, maar dat ken ik alleen van .NET

[ Voor 4% gewijzigd door Mart! op 19-12-2002 23:25 . Reden: typo's weer.. duh! ]

Pagina: 1