/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Flere connections vha. winsock...
Fra : lars


Dato : 23-10-03 13:14

Hej,

Nedenstående kode bevirker, at winsock accepterer flere connections - ved at
oprette et kontrol-array af sockets. Det er fint nok. Men, jeg kan ikke
rigtig forstå hvordan eventet _DataArrival(...) får fat i de data der kommer
ind???

Lars


Private intIBrug As Long

Private Sub Form_Load()
intIBrug = 0
tcpServer(0).LocalPort = 1001
tcpServer(0).Listen
End Sub

Private Sub tcpServer_ConnectionRequest(index As Integer, ByVal requestID As
Long)
If index = 0 Then
intIBrug = intIBrug + 1
Load tcpServer(intIBrug)
tcpServer(intIBrug).LocalPort = 0
tcpServer(intIBrug).Accept requestID
End If
End Sub

Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)
?????
End Sub



 
 
Tomas Christiansen (23-10-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 23-10-03 21:30

lars skrev:
> Nedenstående kode bevirker, at winsock accepterer flere connections - ved
at
> oprette et kontrol-array af sockets. Det er fint nok. Men, jeg kan ikke
> rigtig forstå hvordan eventet _DataArrival(...) får fat i de data der
kommer
> ind???
....
> Private Sub tcpServer_ConnectionRequest(index As Integer, ByVal
requestID...
....
> Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)

Prøv at slette proceduren tcpServer_DataArrival og opret den derefter igen -
ikke ved at kopiere koden ind igen, naturligvis, men ved f.eks. at stille
dig i tcpServer_ConnectionRequest proceduren og vælge DataArrival fra
procedure-listen lige over kode-vinduet.

Mon ikke du har fået oprettet din tcpServer_DataArrival _inden_ du fortalte
VB at tcpServer faktisk er et control-array?

-------
Tomas


Tomas Christiansen (23-10-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 23-10-03 21:35

lars skrev:
> oprette et kontrol-array af sockets.

Husk, forresten, at lægge Service Pack 5 til Visual Basic 6.0/Visual Studio
6.0 på din maskine, idet der er nogle graverende fejl i alle tidligere
versioner af Winsock-kontrollen som gør, at man ikke kan få behandling af
multiple TCP-forbindelser til at virke korrekt!

-------
Tomas


Lars Kjærsgaard (25-10-2003)
Kommentar
Fra : Lars Kjærsgaard


Dato : 25-10-03 08:38

Jeg synes det lyder meget sandsynligt dit løsningsforslag. Jeg vil sige dig
mange, mange tak - du har sikkert gjort en forskel.

De bedste hilsner
Lars



mhabio (25-10-2003)
Kommentar
Fra : mhabio


Dato : 25-10-03 11:21

Hej Lars,

Husk også at du skal sætte tcpServer(intIBrug).Remoteport = 0 når du loader
den nye control, ellers vil remoteport blive sat det det den foregående
control havde og denne port kan være blokkeret i flere minutter mens M$
Windoz rydder op.

Og at du vil få brug for en DoEvents når du ruller gennem dit tcpServer
array for at sende til alle connections, ellers er det kun den sidste der
modtager noget fra serveren.

Mikkel

"lars" <lk@skivehs.dk> wrote in message
news:bn8gj9$33q$1@news.net.uni-c.dk...
> Hej,
>
> Nedenstående kode bevirker, at winsock accepterer flere connections - ved
at
> oprette et kontrol-array af sockets. Det er fint nok. Men, jeg kan ikke
> rigtig forstå hvordan eventet _DataArrival(...) får fat i de data der
kommer
> ind???
>
> Lars
>
>
> Private intIBrug As Long
>
> Private Sub Form_Load()
> intIBrug = 0
> tcpServer(0).LocalPort = 1001
> tcpServer(0).Listen
> End Sub
>
> Private Sub tcpServer_ConnectionRequest(index As Integer, ByVal requestID
As
> Long)
> If index = 0 Then
> intIBrug = intIBrug + 1
> Load tcpServer(intIBrug)
> tcpServer(intIBrug).LocalPort = 0
> tcpServer(intIBrug).Accept requestID
> End If
> End Sub
>
> Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)
> ?????
> End Sub
>
>



Lars Kjærsgaard (26-10-2003)
Kommentar
Fra : Lars Kjærsgaard


Dato : 26-10-03 08:53

Hej Mikkel,

det lyder som om du har stor viden og erfaring i prog. af winsock og netværk
i VB. Kan du fortælle mig hvor du har din viden fra? jeg kan ikke rigtig
finde noget litteratur omkring emnet.

På forhånd mange tak.

De bedste hilsner
Lars


"mhabio" <FoxylogicNOT@stofanet.dk> skrev i en meddelelse
news:3f9a4e9b$0$28971$ba624c82@nntp02.dk.telia.net...
> Hej Lars,
>
> Husk også at du skal sætte tcpServer(intIBrug).Remoteport = 0 når du
loader
> den nye control, ellers vil remoteport blive sat det det den foregående
> control havde og denne port kan være blokkeret i flere minutter mens M$
> Windoz rydder op.
>
> Og at du vil få brug for en DoEvents når du ruller gennem dit tcpServer
> array for at sende til alle connections, ellers er det kun den sidste der
> modtager noget fra serveren.
>
> Mikkel
>
> "lars" <lk@skivehs.dk> wrote in message
> news:bn8gj9$33q$1@news.net.uni-c.dk...
> > Hej,
> >
> > Nedenstående kode bevirker, at winsock accepterer flere connections -
ved
> at
> > oprette et kontrol-array af sockets. Det er fint nok. Men, jeg kan ikke
> > rigtig forstå hvordan eventet _DataArrival(...) får fat i de data der
> kommer
> > ind???
> >
> > Lars
> >
> >
> > Private intIBrug As Long
> >
> > Private Sub Form_Load()
> > intIBrug = 0
> > tcpServer(0).LocalPort = 1001
> > tcpServer(0).Listen
> > End Sub
> >
> > Private Sub tcpServer_ConnectionRequest(index As Integer, ByVal
requestID
> As
> > Long)
> > If index = 0 Then
> > intIBrug = intIBrug + 1
> > Load tcpServer(intIBrug)
> > tcpServer(intIBrug).LocalPort = 0
> > tcpServer(intIBrug).Accept requestID
> > End If
> > End Sub
> >
> > Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)
> > ?????
> > End Sub
> >
> >
>
>



mhabio (26-10-2003)
Kommentar
Fra : mhabio


Dato : 26-10-03 09:37

Hej Lars,

Jeg har et program der bruger Winsock til at lave en remote control med.
Derfor har jeg sikkert kæmpet med de samme problemer som dig. Jeg brugte
Comp.lang.basic.visual.misc hvor netop problematikken med remoteport blev
behandlet. Ellers kender jeg ikke til noget info udover M$'s hjælp på
nettet.

Det er sat op sådan:
Server:
tcpServer(0).RemotePort = 0 'skal sættes inden Listen startes.
tcpServer(0).LocalPort = 1001
tcpServer(0).Listen

Client:
tcpServer(0).RemotePort = 1001
tcpServer(0).LocalPort = 0

Nu kan jeg læse at Tomas skrev at der skulle være fikset nogle fejl med
Service Pack 5 til VB6, måske er remoteport ikke et problem mere ??.



Lars (26-10-2003)
Kommentar
Fra : Lars


Dato : 26-10-03 10:19

Hej Mikkel,

og endnu engang tak.

Du skriver...
"Og at du vil få brug for en DoEvents når du ruller gennem dit tcpServer
array for at sende til alle connections, ellers er det kun den sidste der
modtager noget fra serveren."

Jeg har netop erfaret hvad du beskriver, at der kun sendes til den sidst
oprettede connection.
...jeg er ikke helt sikker på jeg forstår, kan du uddybe din forklaring? Hvad
er det DoEvents skal gøre?

De bedste hilsner
Lars



mhabio (26-10-2003)
Kommentar
Fra : mhabio


Dato : 26-10-03 19:44

Et Doevents efter en SendData command giver Winsock lov til at behandle
commanden. Selvom at du har et array af winsock controller, så kan kun en
arbejde ad gangen. Et DoEvents giver den enkelte love til at udføre sit
arbejde inden du går videre til den næste. Det burde egentligt ikke være
nødvendigt, men er sikkert en fejl i Winsock sammen med VB.

tcpserver.SendData sstring
DoEvents
Mikkel
"Lars" <lk@skivehs.dk> wrote in message news:bng3if$q6b$1@sunsite.dk...
> Hej Mikkel,
>
> og endnu engang tak.
>
> Du skriver...
> "Og at du vil få brug for en DoEvents når du ruller gennem dit tcpServer
> array for at sende til alle connections, ellers er det kun den sidste der
> modtager noget fra serveren."
>
> Jeg har netop erfaret hvad du beskriver, at der kun sendes til den sidst
> oprettede connection.
> ..jeg er ikke helt sikker på jeg forstår, kan du uddybe din forklaring?
Hvad
> er det DoEvents skal gøre?
>
> De bedste hilsner
> Lars
>
>



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste