[VB] Direct text sturen na verbinding met server

Pagina: 1
Acties:

  • ddkiller0900
  • Registratie: Juli 2001
  • Laatst online: 22-08 19:34
Als je het prog dat ik heb gemaakt opstart wordt er direct een verbinding met een server gemaakt maar er moet daarna direct text worden verstuurd naar de server om aan te tonen om welke persoon het gaat die connect. Nou had ik gelezen dat je dit niet onder elkaar mag zetten in de code. Heb het zelf uitgetest en hij zegt dan Wrong protocol or connection state ... Hij is dus nog niet verbonden denk ik. Hoe los ik zoiets op?

Verwijderd

Je wil met een winsock control dus een connectie openen naar een server, dus dan gaat het dus om TCP, niet UDP, right?

Kan je wat code laten zien van hoe je die connectie opbouwt?

  • ddkiller0900
  • Registratie: Juli 2001
  • Laatst online: 22-08 19:34
Dim a As Integer

Private Sub Client_DataArrival(ByVal bytesTotal As Long)
Client.GetData b$

If b$ = "OK" Then
Poort.AddItem a
Exit Sub
End If
End Sub

Private Sub cmdScan_Click()


For a = 1 To 100
ListA.AddItem a
Client.Close
Client.Connect "ddkiller666.d2g.com", a
DoEvents

If Client.State = 4 Then

Client.SendData "SCAN"
DoEvents
End If
Next a


End Sub
Dit is dus code,moet soort portscanner worden voor mijn programma om zo alle server op te sporen :) 8-)
Dit lijkt mij wel te doen, maar ik moet dus direct die text kunnen sturen na het connecten, anders doet ie niks ;)

Verwijderd

1) Const sckResolvingHost = 4
Lijkt me een beetje onlogisch om al data te sturen als je WinSock-control nog bezig is met te kijken waarnaar hij/zij moet connecten...

2) Er is een event van WinSock die afgevuurd wordt op het moment dat ie connect...
Private Sub MyWinSock_Connect()

  • ddkiller0900
  • Registratie: Juli 2001
  • Laatst online: 22-08 19:34
Dat van jou wil helemaal niet werken. Er moet toch iets zijn hoe ik direct na het connecten iets kan verzenden naar de server :? Weet iemand het? Deze kleingheid houdt mij op ;(

  • Mir
  • Registratie: Maart 2001
  • Niet online

Mir

Hoe erg zie jij "Direct" als Direct?
Je PC is echt wel snel genoeg als jij er nog 100-de dingen tussen stopt ;)

Maar je moet gewoon even het event pakken die aangeroepen wordt wanneer je geconnect ben.

Of wat je ook kan doen is een timer in werking laten stellen die je winsock.connectionstate om die 10 mS checkt op status.
Als die Connected is--> Sturen de handel en dan een sub aanroepen die de rest van je programma afhandeld ofzo.


tip: Bouw er even een timeout in..anders ga je last krijgen van hangende programma's als het tegenzit ;)

  • johnwoo
  • Registratie: Oktober 1999
  • Laatst online: 00:25

johnwoo

3S-GTE

Op vrijdag 12 juli 2002 14:55 schreef Mir het volgende:
[...]

Of wat je ook kan doen is een timer in werking laten stellen die je winsock.connectionstate om die 10 mS checkt op status.
Als die Connected is--> Sturen de handel en dan een sub aanroepen die de rest van je programma afhandeld ofzo.

[...]
Dat zou ik niet doen; het is een stuk inefficienter en bovendien niet elegant. Waarom pollen als je zo makkelijk een eventhandler kan bouwen? Socket_Connect is echt de enige juiste manier om dit te doen.
code:
1
2
3
Private Sub Client_Connect()
  Client.SendData "SCAN"
End Sub

Kort maar krachtig :)

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


  • ddkiller0900
  • Registratie: Juli 2001
  • Laatst online: 22-08 19:34
Als ik dat zo zet in mijn Connect Event, dan gebeurt er niks :?
snap er niks van
de bedoeling is dat hij gaat proberen te connecten met bv een computer op ip adres 192.168.0.1
Dan controleert ie welke poort de server daar draait (van een ander proggie). Dus heb ik een for-lus gemaakt, die iedere poort afgaat waarop het programma kan draaien. dus het ziet ongeveer als volgt uit
Dim a As Integer


Private Sub Client_Connect()
Client.SendData "SCAN"
DoEvents

End Sub

Private Sub Client_DataArrival(ByVal bytesTotal As Long)
Client.GetData b$

If b$ = "OK" Then
Ip.AddItem "Poort " + a + " werd geaccepteerd"
Exit Sub
End If
End Sub


Private Sub cmdScan_Click()
For a = 1 To 100
poort.AddItem a

Client.Close
Client.Connect "ddkiller666.d2g.com", a
DoEvents
End Sub
zoiets, kan dit lukken?

Verwijderd

Je moet denk ik zoiets proberen:
code:
1
2
3
4
5
6
7
8
9
10
11
Sub cmdScan_Click()
  RemotePort = de eerste poort
  WinSock.Connect()

Sub WinSock_Connect()
  MsgBox "Connect"

Sub WinSock_Error()
  WinSock.Close()
  RemotePort = RemotePort + 1
  WinSock.Connect()

En natuurlijk even afvangen bij de WinSock_Error() dat RemotePort kleiner blijft dan je maximum...

  • ddkiller0900
  • Registratie: Juli 2001
  • Laatst online: 22-08 19:34
ja maar, er moet een bericht (in mijn geval SCAN ) worden gestuurd om aan te geven dat een poortscanner de chat opvraagt, als die een antwoord krijgt van de server bv "OK" dan moet het ip waarmee hij heeft geconnect aan een lijst toegevoegd worden en dan gaat hij verder met de volgende poort.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 00:13
RemoteHostIP?

[ps]

Klik op je winsock control, druk [F1]

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.


  • ddkiller0900
  • Registratie: Juli 2001
  • Laatst online: 22-08 19:34
Zal niet echt lukken, is geen legale visual basic >:)
Wou van wel ;( had ik tenminste een goede help en nu heb ik niks, alleen visual basic en daarmee moet ik me zien te behelpen.

  • Mir
  • Registratie: Maart 2001
  • Niet online

Mir

Heb je wel bij je server-progje een stukje acceptatie source?
Pagina: 1