[VB / Winsock] Gare data die ik nooit laat versturen?

Pagina: 1
Acties:

  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Topicstarter
Hrrmz.. ben bezig met een soort telnet-chat-server (ja ja ja, het wiel uitvinden enzo, ja ja ja, genoeg kant-en-klare voorbeelden op internet, maar ik wil er wat van opsteken en daarom zoveel mogelijk zelf doen).

Werkt allemaal best lekker, users kunnen via een willekeurig telnet prog inloggen (btw ik maak geen gebruik van het telnet protocol maar er wordt gewoon rauwe data verstuurd, althans dat is de bedoeling, want daar ligt juist het probleem).

Oke ik heb een aantal subs gemaakt die verantwoordelijk zijn voor de input van en output naar de gebruikers. Als iemand inlogt of uitlogt, krijgen alle verbonden clients dat gelijk te zien. Als iemand iets zegt, moeten ze echter zelf eerst een stukje data naar de server verzenden, alvorens de data binnenkomt. Dat snap ik niet en omdat ik dus aan het uitzoeken ben hoe en wat er fout zit (misschien kent iemand dit probleem en kan me ff wijzen waar ik moet zoeken?) heb ik op de server ook maar ff een client gemaakt. Die logt dus in nadat de server loopt en pleurt alle binnenkomende data in een textbox. En daar komt, al gelijk bij het begin, dit te staan:
code:
1
2
3
4
5
6
7
???????4??????????????????????????
????????????????????????????????????????
????????????????????????????????????????
????????????????????????????????????????
????????????????????????????????????????
????????????????????????????????????????
?4????????????


In werkelijkheid is dit 1 lange regel maar om de layout te bewaren heb ik ff newlines ingevoegd

WTF? Dat verstuurd de server helemaal nooit! Hoe komt dat daar? Wat is het? Wat doe ik eraan? Ik snap het niet... alle problemen die ik tot nu toe tegen kwam, waren gewoon logische programmeerfouten/verkeerde technieken/etc, allemaal mijn fout dus... maar dit... dit snap ik niet.

[ Voor 6% gewijzigd door muba op 17-01-2003 17:33 ]

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 25-08 16:18

.oisyn

Moderator Devschuur®

Demotivational Speaker

En nu moeten wij zomaar raden wat er fout is?
Post eens wat code, van je ontvangroutine bijvoorbeeld

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Topicstarter
code:
1
2
3
4
5
6
Private Sub wsClient_DataArrival(ByVal bytesTotal As Long)
wsClient.GetData indata
txtClient.text = txtClient.text & indata
If Len(txtClient.text) > 64000 Then txtClient.text = Right$(txtClient.text, 60000)
txtClient.SelStart = Len(txtClient.text)
End Sub


En het verzenden gebeurt gewoon met ws(j%).SendData outdata

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Topicstarter
Ik heb t al:
code:
1
wsClient.GetData indata, vbString

solves the problem
Althans... van de gare data...
Want de gegevens komen nog steeds pas aan bij de client zodra die zelf ook iets verstuurd.. :?

[ Voor 44% gewijzigd door muba op 17-01-2003 18:03 ]

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


Verwijderd

Ook een manier om dit te voorkomen is om je variabelen standaard te declareren.

Zoals

Dim indata as String

Dan weet vb wat voor data er in moet en maakt het programma tevens sneller.

  • Mickman
  • Registratie: Juni 2001
  • Laatst online: 29-03 18:11
In de MSDN library staat een heel mooi voorbeeld over het gebruik van winsock bij chat-progries.

http://msdn.microsoft.com...onusingwinsockcontrol.asp


Verder is het natuurlijk altijd eigenlijk een must om variabelen strict te declareren, zodat Visual Basic niet zijn eigen gang kan gaan met bijv. een variant
Pagina: 1