Toon posts:

[vb] meerder connecties op 1 poort

Pagina: 1
Acties:
  • 100 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
hellow, ben bezig met een chat programma maar me vraag is is het mogelijk om meeerde connecties op 1 poort de doen? zo jah? weet iemand ff een link waar ik zo snel ff een howto ofzow kan vinden of een stukkie source code?

ik heb het geprobeerd om meerde winsock dingen aan te amken en die allemaal te laten luisteren op bv port 4500 maar dan krijg ik error's dat die port al ingeruik is..


hopeijk heeft iemand wat leuks

erik

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Google: zoek

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • BOOTZ
  • Registratie: Maart 2001
  • Laatst online: 16-09 09:54
met winsock kan het op deze manier:

(ik noem de winsock control altijd wsk, maar daar kan je natuurlijk een andere naam van maken)

maak een control array aan: zet wsk(0) op je form en in je form_load zet je zoiets:
for a=1 to 100
load wsk(a)
next a

dan moet je het commando wsk(0).listen geven in de sub waar dat nu ook staat

ff in (general) (declarations) dit zetten
dim wskUsed as integer

vervolgens in wsk_connectionrequest deze code zetten:
wskUsed=wskUsed+1
wsk(wskUsed).accept requestid

wskUsed is het aantal winsocks dat je al gebruikt hebt, ff zorgen dat je in dit voorbeeld dus niet boven de 100 kan komen, dan krijg je allemaal foutmeldingen.

wat je in feite dus doet: je maakt een array van winsock controls, je laat nummer 0 luisteren, en als er een connectionrequest komt laat je winsock nummer 1,2,3,enz die accepten, en nummer 0 blijft vrij voor meer inkomende verbindingen

Maak je eigen poll


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Vreet dat niet ontzettend veel geheugen?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • TheMrH
  • Registratie: April 2000
  • Laatst online: 01-09 22:45
Wat ze bij Microsoft in de voorbeelden doe is eentje op je form plakken. Als er een binnekomende connectie komt een nieuwe laden. Hieaan geef je de connectionID (zoiets), je luisterd met deze nieuwe op een andere poort en redirect de andere kant ook naar een andere poort.
Orginele weer laten luisteren, klaar!

edit:

Uit de MSDN:
[code]Accepting More than One Connection Request
The basic server outlined above accepts only one connection request.
However, it is possible to accept several connection requests using the same control by creating a control array.
In that case, you do not need to close the connection, but simply create a new instance of the control
(by setting its Index property), and invoking the Accept method on the new instance.

The code below assumes there is a Winsock control on a form named sckServer, and that its Index property has been set to 0;
thus the control is part of a control array. In the Declarations section, a module-level variable intMax is declared.
In the form's Load event, intMax is set to 0, and the LocalPort property for the first control in the array is set to 1001.
Then the Listen method is invoked on the control, making it the "listening control.
As each connection request arrives, the code tests to see if the Index is 0 (the value of the "listening" control).
If so, the listening control increments intMax, and uses that number to create a new control instance.
The new control instance is then used to accept the connection request.

Private intMax As Long

Private Sub Form_Load()
intMax = 0
sckServer(0).LocalPort = 1001
sckServer(0).Listen
End Sub

Private Sub sckServer_ConnectionRequest _
(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
intMax = intMax + 1
Load sckServer(intMax)
sckServer(intMax).LocalPort = 0
sckServer(intMax).Accept requestID
Load txtData(intMax)
End If
End Sub[/code]

The box said 'requires Windows 95 or better', so I installed Linux...