[VB6] Tab/CHR(9) en realtime TAB.

Pagina: 1
Acties:

  • wallywally
  • Registratie: Maart 2004
  • Laatst online: 29-04 11:09
Hallo,

Ik maak een programma wat een router moet configureren via de telnetport 23. In feite werkt alles met de connectie zelf prima. Ik kan connecten, inloggen en command's sturen. Het enige probleem is dat ik op een gegeven moment een tab nodig heb. Als ik dit in telnet doe werkt dit gewoon ok. De tab is voor het verspringen naar het 2e octet in het IP adres. In mijn geval dus naar het "168" octet. (192.168) Als je in telnet een punt zet of iets anders werkt dit niet, het moet echt een tab zijn en hij springt naar het volgende octet. Als ik dit echter inbouw in mijn applicatie, dus ik stuur een tab via CHR(9) of vbTab dan werkt dit niet. Wat is het verschil tussen CHR(9) en vbTab tenopzichte van een realtime TAB op je toetsenbord?

Het wil maar niet lukken om dit voor elkaar te krijgen.

Iemand enig idee?

  • MeIsTwisted
  • Registratie: November 2001
  • Laatst online: 28-07-2023

MeIsTwisted

not a Twisted mind

doe je met sendkeys?
dan kan je dit proberen
Visual Basic:
1
Sendkeys "{TAB}"

Multimonitor is relax :P


  • wallywally
  • Registratie: Maart 2004
  • Laatst online: 29-04 11:09
MeIsTwisted schreef op vrijdag 26 augustus 2005 @ 11:35:
doe je met sendkeys?
dan kan je dit proberen
Visual Basic:
1
Sendkeys "{TAB}"
Ik stuur het met winsock.

Zou ik dit kunnen proberen :

Winsock1.senddata "{TAB}blabla"
??

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 15:47

mulder

ik spuug op het trottoir

Probeer eens \t

oogjes open, snaveltjes dicht


  • wallywally
  • Registratie: Maart 2004
  • Laatst online: 29-04 11:09
ja zit nu op me werk, kan niet proberen.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 29-04 23:38
Probeer em eens als byte array te versturen

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • wallywally
  • Registratie: Maart 2004
  • Laatst online: 29-04 11:09
Mja daar kwam ik ook ineens achter met \r als return en \t als tab. Hoe werkt dit? Is dit met 1 string sturen? Want ik moet eigenlijk de karakters sturen per karakter, als ik 1 string stuur werkt dit niet op het apparaat. Het apparaat kan dus maar 1 karakter per keer ontvangen, die ik dan via winsock ook weer terug krijg als bevestiging en daarna stuur ik de nieuwe. Als ik dus \t gebruik stuurt hij eerst \ en daarna de t. Als ik dit in 1 keer stuur werkt het ook niet goed. Enig idee iemand ?
farlane schreef op vrijdag 26 augustus 2005 @ 15:04:
Probeer em eens als byte array te versturen
Heb je hier een voorbeeldje van? Ben niet goed met byte arrays ;(

Ik zit echt van alles te proberen maar ik krijg het niet voor mekaar om de volgende tabstop te krijgen in de terminal/telnet sessie.

[ Voor 24% gewijzigd door wallywally op 28-09-2005 09:38 ]


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

Google:

visual basic winsock send "byte array"

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Public Function vbSend(ByVal lngSocket As Long, strData As String) As Long 
'******************************************************************************** 
'Purpose   :Sends data to a connected socket 
'Returns   :Number of bytes sent
'Arguments :lngSocket    - the socket connected to the remote host 
'           strData      - data to send 
'******************************************************************************** 
    ' 
    Dim arrBuffer()     As Byte 
    Dim lngBytesSent    As Long 
    Dim lngBufferLength As Long 
    ' 
    lngBufferLength = Len(strData) 
    ' 
    If IsConnected(lngSocket) And lngBufferLength > 0 Then 
        ' 
        'Convert the data string to a byte array 
        arrBuffer() = StrConv(strData, vbFromUnicode) 
        ' 
        'Call the send Winsock API function in order to send data 
        lngBytesSent = send(lngSocket, arrBuffer(0), lngBufferLength, 0&) 
        ' 
        vbSend = lngBytesSent 
        ' 
    Else 
        ' 
        vbSend = SOCKET_ERROR 
        ' 
    End If 
    ' 
End Function


Werkt dit?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
wallywally schreef op vrijdag 26 augustus 2005 @ 11:33:
Wat is het verschil tussen CHR(9) en vbTab tenopzichte van een realtime TAB op je toetsenbord?

Het wil maar niet lukken om dit voor elkaar te krijgen.

Iemand enig idee?
Installeer Ethereal (of een andere network sniffer) en kijk wat er precies naar de router wordt verstuurd.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Wat is er mis met een
Visual Basic 6:
1
Winsock1.Senddata "dit is een tekst" & Chr(9) & "met een tab er in"

??

Of (leesbaarder):
Visual Basic 6:
1
Winsock1.Senddata "dit is een tekst" & vbTab & "met een tab er in"


En wellicht dat je even moet oppassen dat je geen UNICODE stuurt (maar dat doet winsock volgens mij standaard al niet), anders effe strConv(myString,vbFromUnicode) ofzo gebruiken.

Je hoeft in ieder geval niet te gaan klooien met byte-arrays.

[ Voor 83% gewijzigd door RobIII op 28-09-2005 17:14 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • wallywally
  • Registratie: Maart 2004
  • Laatst online: 29-04 11:09
RobIII schreef op woensdag 28 september 2005 @ 17:12:
Wat is er mis met een
Visual Basic 6:
1
Winsock1.Senddata "dit is een tekst" & Chr(9) & "met een tab er in"

??

Of (leesbaarder):
Visual Basic 6:
1
Winsock1.Senddata "dit is een tekst" & vbTab & "met een tab er in"


En wellicht dat je even moet oppassen dat je geen UNICODE stuurt (maar dat doet winsock volgens mij standaard al niet), anders effe strConv(myString,vbFromUnicode) ofzo gebruiken.

Je hoeft in ieder geval niet te gaan klooien met byte-arrays.
Ik zal ff uitleggen wat ik geprobeerd heb :

ws1.senddata chr(9)
ws1.senddata chr$(9)
ws1.senddata vbTab
ws1.senddata chr(11) <-- verticale tab
ws1.senddata chr$(11)
ws1.senddata "[]" <-- de echte tabstring, chr9 dus als blokje
ws1.senddata "{TAB}"
ws1.senddata "\t"
ws1.senddata "\x09"

Probleem is echter dat het prog gedwongen is om de karakters 1 voor 1 te sturen, omdat het anders te snel gaat voor het apparaat. Hierbij wacht ik op terugkomst van karakters in de sessie en stuur daarna volgende karakter. Maar ik heb dit ook geprobeert in 1 string te versturen, dat werkt ook niet.

Die van de bytearray zal ik morgen is proberen, bedankt iig voor de code, codecaster.
Is er niet iets van een OCX die een "echte" telnetsessie nabootst?

  • wallywally
  • Registratie: Maart 2004
  • Laatst online: 29-04 11:09
OlafvdSpek schreef op woensdag 28 september 2005 @ 14:34:
[...]

Installeer Ethereal (of een andere network sniffer) en kijk wat er precies naar de router wordt verstuurd.
Hier een log(rechtsklik save as) van ethereal waarbij ik zo min mogelijk heb gelogt, alleen de tab zelf.

FYI 192.168.254.254 is de router, 192.168.254.2 ben ik zelf.
Het lijkt idd dat er "\t" wordt verstuurd naar de router, alleen als ik dat als kale string stuur werkt dat niet ok. k ga ff experimenteren. Als iemand suggesties heeft graag :Y) Ik ga ff de bytearray proberen met \t

[ Voor 21% gewijzigd door wallywally op 29-09-2005 09:28 ]


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

Kun je niet een Winsock app bouwen, met een listener op poort, wat is het, 25 ofzo voor telnet?

En dan met telnet naar jouw server connecten, Tab indrukken en kijken wat je app. ontvangt?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
wallywally schreef op donderdag 29 september 2005 @ 09:23:
Hier een log(rechtsklik save as) van ethereal waarbij ik zo min mogelijk heb gelogt, alleen de tab zelf.

FYI 192.168.254.254 is de router, 192.168.254.2 ben ik zelf.
Het lijkt idd dat er "\t" wordt verstuurd naar de router, alleen als ik dat als kale string stuur werkt dat niet ok. k ga ff experimenteren. Als iemand suggesties heeft graag :Y) Ik ga ff de bytearray proberen met \t
Heb je dat vergeleken met een dump van als je het handmatig doet?

Verder zie ik "\r" (0xd) zonder "\n" (0xa). Is dat de bedoeling?

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
wallywally schreef op donderdag 29 september 2005 @ 09:23:
[...]
FYI 192.168.254.254 is de router, 192.168.254.2 ben ik zelf.
Het lijkt idd dat er "\t" wordt verstuurd naar de router, alleen als ik dat als kale string stuur werkt dat niet ok. k ga ff experimenteren. Als iemand suggesties heeft graag :Y) Ik ga ff de bytearray proberen met \t
"\t"is de C notatie voor een tab. Het is 1 karakter, geen twee, en dus kun je niet de "kale string" sturen die je zou denken.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • wallywally
  • Registratie: Maart 2004
  • Laatst online: 29-04 11:09
OlafvdSpek schreef op donderdag 29 september 2005 @ 10:14:
[...]

Heb je dat vergeleken met een dump van als je het handmatig doet?

Verder zie ik "\r" (0xd) zonder "\n" (0xa). Is dat de bedoeling?
Dit is de handmatige dump. Ik ben met telnet geconnect naar die router en ging tot aan de procedure waar ik moet zijn. Bij het invoeren van het IPadres dus, Ik drukte tab en stopte meteen de capture van de sessie. Dit zou dus ongeveer het netwerkverkeer zijn wat heen en weer gaat bij alleen een tab. Misschien iets meer, aangezien ik niet exact tegelijk de sniffer kan starten, tab kan drukken en de sniffer weer stoppen. Dit is dus de dump van de windows telnet waarbij het gewoon werkt met een tab.
MSalters schreef op donderdag 29 september 2005 @ 10:21:
[...]

"\t"is de C notatie voor een tab. Het is 1 karakter, geen twee, en dus kun je niet de "kale string" sturen die je zou denken.
Mja dat het de C notatie is voor tab wist ik, alleen 1 karakter.. hmm, hoe zou ik dat moeten sturen als 1 karakter, met die bytearray? "\x09" zou het alternatief hiervoor zijn aldus deze site.

[ Voor 8% gewijzigd door wallywally op 29-09-2005 10:45 ]


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
En heb je die vergeleken met de dump van je eigen applicatie?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je kunt de karakters wel 1 voor 1 proberen te sturen, maar bij mijn weten wacht Winsock tot 'ie z'n buffer vol heeft of tot er een "time-out" op treedt om de buffer te mogen/kunnen vullen en dan stuurt 'ie z'n buffer. 1 voor 1 zenden is er gewoon niet bij met de Winsock OCX bij mijn weten. Ik zou eens gaan zoeken of het probleem niet ergens anders zit.
wallywally schreef op donderdag 29 september 2005 @ 10:44:
Mja dat het de C notatie is voor tab wist ik, alleen 1 karakter.. hmm, hoe zou ik dat moeten sturen als 1 karakter, met die bytearray? "\x09" zou het alternatief hiervoor zijn aldus deze site.
De "notatie" voor TAB is Chr(9) of vbTab als je het in een string stuurt, en gewoon 9 als je het in een byte stopt. Maar dat is echt érg basic hoor. \x09 is gewoon een hex notatie van 9hex = 9dec.

[ Voor 48% gewijzigd door RobIII op 29-09-2005 11:14 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • wallywally
  • Registratie: Maart 2004
  • Laatst online: 29-04 11:09
RobIII schreef op donderdag 29 september 2005 @ 11:12:
Je kunt de karakters wel 1 voor 1 proberen te sturen, maar bij mijn weten wacht Winsock tot 'ie z'n buffer vol heeft of tot er een "time-out" op treedt om de buffer te mogen/kunnen vullen en dan stuurt 'ie z'n buffer. 1 voor 1 zenden is er gewoon niet bij met de Winsock OCX bij mijn weten. Ik zou eens gaan zoeken of het probleem niet ergens anders zit.
Als ik meer dan 1 char tegelijk stuur snapt het apparaat het niet meer, het moet 1 voor 1 voordat hij het pakt. Daar heb ik een procedure voor en dat werkt goed. Als ik bijvoorbeeld stuur "192.168.0.1" dan krijgt hij alleen 181. Een deel van de string dus. Dat komt omdat hij alles terug stuurt wat hij binnen krijgt als bevestiging dat hij het binnen heeft. Als ik dus bijvoorbeeld "1" stuur, dan krijg ik 1 binnen ter bevestiging en kan daarna de volgende string sturen. Dit leverde in het begin dus nogal wat problemen op totdat ik hierachter kwam, dat werkt nu goed 1 voor 1.
De "notatie" voor TAB is Chr(9) of vbTab als je het in een string stuurt, en gewoon 9 als je het in een byte stopt. Maar dat is echt érg basic hoor. \x09 is gewoon een hex notatie van 9hex = 9dec.
Dat weet ik.
En heb je die vergeleken met de dump van je eigen applicatie?
Daar ben ik nu mee bezig :)

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

wallywally schreef op donderdag 29 september 2005 @ 11:29:
(...)Als ik dus bijvoorbeeld "1" stuur, dan krijg ik 1 binnen ter bevestiging en kan daarna de volgende string sturen. Dit leverde in het begin dus nogal wat problemen op totdat ik hierachter kwam, dat werkt nu goed 1 voor 1.
Wat krijg je dan terug als je een Chr(9) stuurt??

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • wallywally
  • Registratie: Maart 2004
  • Laatst online: 29-04 11:09
CodeCaster schreef op donderdag 29 september 2005 @ 11:45:
[...]

Wat krijg je dan terug als je een Chr(9) stuurt??
Dan gaat hij niet door, blijft op t zelfde invoer veld staan. Maar ik heb het denk ik nu gefixt met de bytearray, zit nog even te testen.
Pagina: 1