OVH Cloud OVH Cloud

winsock

2 réponses
Avatar
François Ranwez
Salut à tous,

J'ai créé une application Serveur qui lit les informations présentes sur le
port COM et les écrit sur le réseau ethernet au moyen d'un contrôle Winsock.
J'ai créé également une application Client qui lit les informations sur le
réseau ethernet au moyen d'un contrôle Winsock.

Je lance mon application Serveur sur la machine X, puis mon application
Client sur la machine Y. Tout est OK.
Je lance à présent une seconde fois mon application Client sur la machine Z.
Sur la machine Z, je reçoit les informations correctement mais la machine Y
ne reçoit plus rien. Elle (la machine Y) recevra les données en vrac lorsque
je refermerait l'application de la machine Z.

Comment faire pour que plusieurs applications client reçoivent les
informations simultanément ?

Vous trouverez ci-dessous l'extrait de l'application Serveur et un extrait
de l'application Client

Application SERVEUR

private sub Envoi
For index = 1 To UserOnLine
DataWinSock = Var_GroupAddress_Dec + Var_Data + Var_Priority + Var_Type
+ Var_RoutingCount + " - " + TodayDate + " - " + TodayTime
AddTextRealTime ("Send TCP (" + Trim(str(index)) + ") - " + DataWinSock)
sckClient(index).SendData DataWinSock
Next index
End Sub


Private Sub sckClient_Close(index As Integer)
sckClient(index).Close
Unload sckClient(index)
UserOnLine = UserOnLine - 1
If UserOnLine = 0 Then LastIndex = 0
End Sub

Private Sub sckClient_DataArrival(index As Integer, ByVal bytesTotal As
Long)

'sckClient(index).GetData DataWinSock, vbString

End Sub

Private Sub sckListen_ConnectionRequest(ByVal requestID As Long)
UserOnLine = UserOnLine + 1
LastIndex = LastIndex + 1
Load sckClient(LastIndex)
sckClient(LastIndex).Accept requestID
End Sub



Application CLIENT

Private Sub Form_Load()
Winsock.RemoteHost = "10.0.0.39"
Winsock.RemotePort = "666"
Winsock.Connect
End Sub

Private Sub winsock_DataArrival(ByVal bytesTotal As Long)

Winsock.GetData Data$, vbString
If Len(outtext.Text) > 2000 Then
outtext.Text = ""
End If
outtext.Text = outtext.Text + Data$ + Chr$(13) + Chr$(10)

End Sub

Je vous serais très reconnaissant, de pouvoir me donner au moins piste de
recherche ou alors encore mieux, la solution !

Un grand merci d'avance
François Ranwez

2 réponses

Avatar
Benoît O'Hare
tu l'as mis en TCP ou UDP?
car TCP garanti les temps et les arrivées tandis que UDP balance les paquets
sur les reseau en vrac

--
(Hello)
| | | / O
(o) (o) O
(_) / o
o0oo - - - - - - oo0oo
(MrBinaire)

Benoît O'Hare
www.tryskel.com (portail web)
www.tryskel.net (communauté tryskel)
"François Ranwez" a écrit dans le message de
news: 3f47d932$0$24188$
Salut à tous,

J'ai créé une application Serveur qui lit les informations présentes sur


le
port COM et les écrit sur le réseau ethernet au moyen d'un contrôle


Winsock.
J'ai créé également une application Client qui lit les informations sur le
réseau ethernet au moyen d'un contrôle Winsock.

Je lance mon application Serveur sur la machine X, puis mon application
Client sur la machine Y. Tout est OK.
Je lance à présent une seconde fois mon application Client sur la machine


Z.
Sur la machine Z, je reçoit les informations correctement mais la machine


Y
ne reçoit plus rien. Elle (la machine Y) recevra les données en vrac


lorsque
je refermerait l'application de la machine Z.

Comment faire pour que plusieurs applications client reçoivent les
informations simultanément ?

Vous trouverez ci-dessous l'extrait de l'application Serveur et un extrait
de l'application Client

Application SERVEUR

private sub Envoi
For index = 1 To UserOnLine
DataWinSock = Var_GroupAddress_Dec + Var_Data + Var_Priority +


Var_Type
+ Var_RoutingCount + " - " + TodayDate + " - " + TodayTime
AddTextRealTime ("Send TCP (" + Trim(str(index)) + ") - " +


DataWinSock)
sckClient(index).SendData DataWinSock
Next index
End Sub


Private Sub sckClient_Close(index As Integer)
sckClient(index).Close
Unload sckClient(index)
UserOnLine = UserOnLine - 1
If UserOnLine = 0 Then LastIndex = 0
End Sub

Private Sub sckClient_DataArrival(index As Integer, ByVal bytesTotal As
Long)

'sckClient(index).GetData DataWinSock, vbString

End Sub

Private Sub sckListen_ConnectionRequest(ByVal requestID As Long)
UserOnLine = UserOnLine + 1
LastIndex = LastIndex + 1
Load sckClient(LastIndex)
sckClient(LastIndex).Accept requestID
End Sub



Application CLIENT

Private Sub Form_Load()
Winsock.RemoteHost = "10.0.0.39"
Winsock.RemotePort = "666"
Winsock.Connect
End Sub

Private Sub winsock_DataArrival(ByVal bytesTotal As Long)

Winsock.GetData Data$, vbString
If Len(outtext.Text) > 2000 Then
outtext.Text = ""
End If
outtext.Text = outtext.Text + Data$ + Chr$(13) + Chr$(10)

End Sub

Je vous serais très reconnaissant, de pouvoir me donner au moins piste de
recherche ou alors encore mieux, la solution !

Un grand merci d'avance
François Ranwez




Avatar
François Ranwez
en TCP

"Benoît O'Hare" a écrit dans le message de
news:
tu l'as mis en TCP ou UDP?
car TCP garanti les temps et les arrivées tandis que UDP balance les


paquets
sur les reseau en vrac

--
(Hello)
| | | / O
(o) (o) O
(_) / o
o0oo - - - - - - oo0oo
(MrBinaire)

Benoît O'Hare
www.tryskel.com (portail web)
www.tryskel.net (communauté tryskel)
"François Ranwez" a écrit dans le message de
news: 3f47d932$0$24188$
> Salut à tous,
>
> J'ai créé une application Serveur qui lit les informations présentes sur
le
> port COM et les écrit sur le réseau ethernet au moyen d'un contrôle
Winsock.
> J'ai créé également une application Client qui lit les informations sur


le
> réseau ethernet au moyen d'un contrôle Winsock.
>
> Je lance mon application Serveur sur la machine X, puis mon application
> Client sur la machine Y. Tout est OK.
> Je lance à présent une seconde fois mon application Client sur la


machine
Z.
> Sur la machine Z, je reçoit les informations correctement mais la


machine
Y
> ne reçoit plus rien. Elle (la machine Y) recevra les données en vrac
lorsque
> je refermerait l'application de la machine Z.
>
> Comment faire pour que plusieurs applications client reçoivent les
> informations simultanément ?
>
> Vous trouverez ci-dessous l'extrait de l'application Serveur et un


extrait
> de l'application Client
>
> Application SERVEUR
>
> private sub Envoi
> For index = 1 To UserOnLine
> DataWinSock = Var_GroupAddress_Dec + Var_Data + Var_Priority +
Var_Type
> + Var_RoutingCount + " - " + TodayDate + " - " + TodayTime
> AddTextRealTime ("Send TCP (" + Trim(str(index)) + ") - " +
DataWinSock)
> sckClient(index).SendData DataWinSock
> Next index
> End Sub
>
>
> Private Sub sckClient_Close(index As Integer)
> sckClient(index).Close
> Unload sckClient(index)
> UserOnLine = UserOnLine - 1
> If UserOnLine = 0 Then LastIndex = 0
> End Sub
>
> Private Sub sckClient_DataArrival(index As Integer, ByVal bytesTotal As
> Long)
>
> 'sckClient(index).GetData DataWinSock, vbString
>
> End Sub
>
> Private Sub sckListen_ConnectionRequest(ByVal requestID As Long)
> UserOnLine = UserOnLine + 1
> LastIndex = LastIndex + 1
> Load sckClient(LastIndex)
> sckClient(LastIndex).Accept requestID
> End Sub
>
>
>
> Application CLIENT
>
> Private Sub Form_Load()
> Winsock.RemoteHost = "10.0.0.39"
> Winsock.RemotePort = "666"
> Winsock.Connect
> End Sub
>
> Private Sub winsock_DataArrival(ByVal bytesTotal As Long)
>
> Winsock.GetData Data$, vbString
> If Len(outtext.Text) > 2000 Then
> outtext.Text = ""
> End If
> outtext.Text = outtext.Text + Data$ + Chr$(13) + Chr$(10)
>
> End Sub
>
> Je vous serais très reconnaissant, de pouvoir me donner au moins piste


de
> recherche ou alors encore mieux, la solution !
>
> Un grand merci d'avance
> François Ranwez
>
>