OVH Cloud OVH Cloud

udp avec winsock

6 réponses
Avatar
Jean Naimard
Bonjour,

Je doit modifier un programme qui tourne sur 2 pc et qui communique via
winsock en udp.
Il faut que je rajoute un 3eme pc. pouvez vous me donner une idée pour faire
communiquer ce 3eme pc.
merci

6 réponses

Avatar
Jean-Marc
"Jean Naimard" a écrit dans le message de
news:df7b5p$lgj$
Bonjour,

Je doit modifier un programme qui tourne sur 2 pc et qui communique via
winsock en udp.
Il faut que je rajoute un 3eme pc. pouvez vous me donner une idée pour


faire
communiquer ce 3eme pc.



Hello,

impossible de répondre sans savoir un minimum
en quoi consiste les échanges. Si il s'agit d'informations
qui ne nécessitent pas de connaitre l'émetteur pour pouvoir
être utilisées et si une information donnée est toujours utile à tous,
alors tu auras peu à réécrire (je pense).
Si en revanche l'introduction du 3eme PC implique qu'il faut en plus
déterminer l'émetteur et le récepteur, alors tu auras plus à réécrire.
Si c'est de l'UDP utilisé juste pour broadcaster des infos publiques,
tu n'auras peut être carrément rien à réécrire.
Bref, il faut voir, c'est au cas par cas.

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
Jean Naimard
"Jean-Marc" a écrit dans le message de news:
43173aa5$0$18262$
"Jean Naimard" a écrit dans le message de
news:df7b5p$lgj$
> Bonjour,
>
> Je doit modifier un programme qui tourne sur 2 pc et qui communique via
> winsock en udp.
> Il faut que je rajoute un 3eme pc. pouvez vous me donner une idée pour
faire
> communiquer ce 3eme pc.

Hello,

impossible de répondre sans savoir un minimum
en quoi consiste les échanges. Si il s'agit d'informations
qui ne nécessitent pas de connaitre l'émetteur pour pouvoir
être utilisées et si une information donnée est toujours utile à tous,
alors tu auras peu à réécrire (je pense).
Si en revanche l'introduction du 3eme PC implique qu'il faut en plus
déterminer l'émetteur et le récepteur, alors tu auras plus à réécrire.
Si c'est de l'UDP utilisé juste pour broadcaster des infos publiques,
tu n'auras peut être carrément rien à réécrire.
Bref, il faut voir, c'est au cas par cas.

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;




merci pour ta réponse

Voici si dessous le style tres simplifié de la com en question

**** pour le premier poste *****
Private Sub Form_Load()
Reseau(0).LocalPort = "6002"
Reseau(0).RemotePort = "6001"
Reseau(0).RemoteHost = "REIMS-RMS-162"
Reseau(0).Bind
End Sub

Private Sub Reseau_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim reponse_Reseau(0) As String
Reseau(0).GetData reponse_Reseau(0)
Lb_Poste.Caption = Mid(reponse_Reseau(0), 1, 2)
Lb_reception.Caption = Mid(reponse_Reseau(0), 3)
End Sub

Private Sub Timer1_Timer()
Reseau(0).SendData "P1" & Txt_Emission.Text ' les deux 1er caractetes
designe l'emeteur
End Sub

**** pour le deuxieme poste *****
Private Sub Form_Load()
Reseau(0).LocalPort = "6001"
Reseau(0).RemotePort = "6002"
Reseau(0).RemoteHost = "REIMS-RMS-162"
Reseau(0).Bind
End Sub

Private Sub Reseau_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim reponse_Reseau(0) As String
Reseau(0).GetData reponse_Reseau(0)
Lb_Poste.Caption = Mid(reponse_Reseau(0), 1, 2)
Lb_reception.Caption = Mid(reponse_Reseau(0), 3)
End Sub

Private Sub Timer1_Timer()
Reseau(0).SendData "P2" & Txt_Emission.Text
End Sub
Avatar
Jean Naimard
houps, bien sur le RemoteHost est different sur les postes

"Jean Naimard" a écrit dans le message de news:
df7oco$lc7$

"Jean-Marc" a écrit dans le message de


news:
43173aa5$0$18262$
> "Jean Naimard" a écrit dans le message de
> news:df7b5p$lgj$
> > Bonjour,
> >
> > Je doit modifier un programme qui tourne sur 2 pc et qui communique


via
> > winsock en udp.
> > Il faut que je rajoute un 3eme pc. pouvez vous me donner une idée pour
> faire
> > communiquer ce 3eme pc.
>
> Hello,
>
> impossible de répondre sans savoir un minimum
> en quoi consiste les échanges. Si il s'agit d'informations
> qui ne nécessitent pas de connaitre l'émetteur pour pouvoir
> être utilisées et si une information donnée est toujours utile à tous,
> alors tu auras peu à réécrire (je pense).
> Si en revanche l'introduction du 3eme PC implique qu'il faut en plus
> déterminer l'émetteur et le récepteur, alors tu auras plus à réécrire.
> Si c'est de l'UDP utilisé juste pour broadcaster des infos publiques,
> tu n'auras peut être carrément rien à réécrire.
> Bref, il faut voir, c'est au cas par cas.
>
> --
> Jean-marc
> "There are only 10 kind of people
> those who understand binary and those who don't."
> mailto: remove '_no_spam_' ;
>

merci pour ta réponse

Voici si dessous le style tres simplifié de la com en question

**** pour le premier poste *****
Private Sub Form_Load()
Reseau(0).LocalPort = "6002"
Reseau(0).RemotePort = "6001"
Reseau(0).RemoteHost = "REIMS-RMS-162"
Reseau(0).Bind
End Sub

Private Sub Reseau_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim reponse_Reseau(0) As String
Reseau(0).GetData reponse_Reseau(0)
Lb_Poste.Caption = Mid(reponse_Reseau(0), 1, 2)
Lb_reception.Caption = Mid(reponse_Reseau(0), 3)
End Sub

Private Sub Timer1_Timer()
Reseau(0).SendData "P1" & Txt_Emission.Text ' les deux 1er


caractetes
designe l'emeteur
End Sub

**** pour le deuxieme poste *****
Private Sub Form_Load()
Reseau(0).LocalPort = "6001"
Reseau(0).RemotePort = "6002"
Reseau(0).RemoteHost = "REIMS-RMS-162"
Reseau(0).Bind
End Sub

Private Sub Reseau_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim reponse_Reseau(0) As String
Reseau(0).GetData reponse_Reseau(0)
Lb_Poste.Caption = Mid(reponse_Reseau(0), 1, 2)
Lb_reception.Caption = Mid(reponse_Reseau(0), 3)
End Sub

Private Sub Timer1_Timer()
Reseau(0).SendData "P2" & Txt_Emission.Text
End Sub





Avatar
Jean Naimard
houps, bien sur le RemoteHost est different sur les postes

"Jean Naimard" a écrit dans le message de news:
df7oco$lc7$

"Jean-Marc" a écrit dans le message de


news:
43173aa5$0$18262$
> "Jean Naimard" a écrit dans le message de
> news:df7b5p$lgj$
> > Bonjour,
> >
> > Je doit modifier un programme qui tourne sur 2 pc et qui communique


via
> > winsock en udp.
> > Il faut que je rajoute un 3eme pc. pouvez vous me donner une idée pour
> faire
> > communiquer ce 3eme pc.
>
> Hello,
>
> impossible de répondre sans savoir un minimum
> en quoi consiste les échanges. Si il s'agit d'informations
> qui ne nécessitent pas de connaitre l'émetteur pour pouvoir
> être utilisées et si une information donnée est toujours utile à tous,
> alors tu auras peu à réécrire (je pense).
> Si en revanche l'introduction du 3eme PC implique qu'il faut en plus
> déterminer l'émetteur et le récepteur, alors tu auras plus à réécrire.
> Si c'est de l'UDP utilisé juste pour broadcaster des infos publiques,
> tu n'auras peut être carrément rien à réécrire.
> Bref, il faut voir, c'est au cas par cas.
>
> --
> Jean-marc
> "There are only 10 kind of people
> those who understand binary and those who don't."
> mailto: remove '_no_spam_' ;
>

merci pour ta réponse

Voici si dessous le style tres simplifié de la com en question

**** pour le premier poste *****
Private Sub Form_Load()
Reseau(0).LocalPort = "6002"
Reseau(0).RemotePort = "6001"
Reseau(0).RemoteHost = "REIMS-RMS-162"
Reseau(0).Bind
End Sub

Private Sub Reseau_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim reponse_Reseau(0) As String
Reseau(0).GetData reponse_Reseau(0)
Lb_Poste.Caption = Mid(reponse_Reseau(0), 1, 2)
Lb_reception.Caption = Mid(reponse_Reseau(0), 3)
End Sub

Private Sub Timer1_Timer()
Reseau(0).SendData "P1" & Txt_Emission.Text ' les deux 1er


caractetes
designe l'emeteur
End Sub

**** pour le deuxieme poste *****
Private Sub Form_Load()
Reseau(0).LocalPort = "6001"
Reseau(0).RemotePort = "6002"
Reseau(0).RemoteHost = "REIMS-RMS-162"
Reseau(0).Bind
End Sub

Private Sub Reseau_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim reponse_Reseau(0) As String
Reseau(0).GetData reponse_Reseau(0)
Lb_Poste.Caption = Mid(reponse_Reseau(0), 1, 2)
Lb_reception.Caption = Mid(reponse_Reseau(0), 3)
End Sub

Private Sub Timer1_Timer()
Reseau(0).SendData "P2" & Txt_Emission.Text
End Sub





Avatar
jean-marc
"Jean Naimard" wrote in message
news:df8p1g$6uv$
houps, bien sur le RemoteHost est different sur les postes

"Jean Naimard" a écrit dans le message de news:
df7oco$lc7$
>
> "Jean-Marc" a écrit dans le message de
news:
> 43173aa5$0$18262$
> > "Jean Naimard" a écrit dans le message de
> > news:df7b5p$lgj$
> > > Bonjour,
> > >
> > > Je doit modifier un programme qui tourne sur 2 pc et qui communique
via
> > > winsock en udp.
> > > Il faut que je rajoute un 3eme pc. pouvez vous me donner une idée


pour
> > faire
> > > communiquer ce 3eme pc.
> >
> > Hello,
> >
> > impossible de répondre sans savoir un minimum
> > en quoi consiste les échanges. Si il s'agit d'informations
> > qui ne nécessitent pas de connaitre l'émetteur pour pouvoir
> > être utilisées et si une information donnée est toujours utile à tous,
> > alors tu auras peu à réécrire (je pense).
> > Si en revanche l'introduction du 3eme PC implique qu'il faut en plus
> > déterminer l'émetteur et le récepteur, alors tu auras plus à réécrire.
> > Si c'est de l'UDP utilisé juste pour broadcaster des infos publiques,
> > tu n'auras peut être carrément rien à réécrire.
> > Bref, il faut voir, c'est au cas par cas.
> >
> > --
> > Jean-marc
> > "There are only 10 kind of people
> > those who understand binary and those who don't."
> > mailto: remove '_no_spam_' ;
> >
>
> merci pour ta réponse
>
> Voici si dessous le style tres simplifié de la com en question
>
> **** pour le premier poste *****
> Private Sub Form_Load()
> Reseau(0).LocalPort = "6002"
> Reseau(0).RemotePort = "6001"
> Reseau(0).RemoteHost = "REIMS-RMS-162"
> Reseau(0).Bind
> End Sub
>
> Private Sub Reseau_DataArrival(Index As Integer, ByVal bytesTotal As


Long)
> Dim reponse_Reseau(0) As String
> Reseau(0).GetData reponse_Reseau(0)
> Lb_Poste.Caption = Mid(reponse_Reseau(0), 1, 2)
> Lb_reception.Caption = Mid(reponse_Reseau(0), 3)
> End Sub
>
> Private Sub Timer1_Timer()
> Reseau(0).SendData "P1" & Txt_Emission.Text ' les deux 1er
caractetes
> designe l'emeteur
> End Sub
>
> **** pour le deuxieme poste *****
> Private Sub Form_Load()
> Reseau(0).LocalPort = "6001"
> Reseau(0).RemotePort = "6002"
> Reseau(0).RemoteHost = "REIMS-RMS-162"
> Reseau(0).Bind
> End Sub
>
> Private Sub Reseau_DataArrival(Index As Integer, ByVal bytesTotal As


Long)
> Dim reponse_Reseau(0) As String
> Reseau(0).GetData reponse_Reseau(0)
> Lb_Poste.Caption = Mid(reponse_Reseau(0), 1, 2)
> Lb_reception.Caption = Mid(reponse_Reseau(0), 3)
> End Sub
>
> Private Sub Timer1_Timer()
> Reseau(0).SendData "P2" & Txt_Emission.Text
> End Sub




Hello,

Je vois.

Le principe de la communication est vraiment
fait pour 2 PC, et pas d'autres.
Il faut revoir le principe de base. Ce n'est pas
compliqué ici car les échanges d'infos sont vraiment
simples.

// Ce qui suit n'est paut être pas du tout adapté à ton cas
// particulier. C'est juste basé sur ma compréhension
// à partir du petit bout de code.

Si je devais faire ceci, je crérais 2 programmes:

Un serveur, qui tournerais sur une machine qui est
toujours allumée ou au moins qui est allumée quand 1
au moins des clients est allumé. Si nécessaire, le
serveur peut tourner sur un des postes clients (1 des 3 PC).

Un programme Client (le même pour les 3 PC).

Je ferais en TCP plutot qu'en udp (mais bon, peu importe ici)
et je ferais transiter toutes les infos via le serveur, qui
doit au minimum savoir qui est connecté. Il a aussi la charge
d'acheminer les infos d'un Emetteur (E) vers le ou les
destinataires (D).

Le serveur recevra 2 types de message:
- message "de service" : connection
"Je suis le CLIENT X qui me connecte"
- message "de service" : QUI EST LA
"QUI EST LA"
- message "normal"
"JE DIS AU CLIENT Y:COUCOU"
"JE DIS A TOUS:HELLO"

Il utilisera les connections pour garder une table des
clients connectés. Il aura aussi la charge d'enregistrer
les déconnections des clients.
Il fera le relai de tous les messages "normaux" en les envoyant
vers le ou les destinataires (clients).

Le programme client peut:
* envoyer au serveur 2 type de messages
- message de service
- "QUI EST LA"
- "JE SUIS X, JE ME CONNECTE"
- message normal
"JE DIS AU CLIENT Y:COUCOU"
"JE DIS A TOUS:HELLO"
* Recevoir 2 types de réponses
- messages de service:
- "VOICI LES CLIENTS : A, B, C"
- "CONNECTION ACCEPTEE"
- messages normaux:
- "LE CLIENT A TE DIT:COUCOU"

Voila, un peu simplifié, ce que je ferais. En fait
je l'ai déjà fait pour une petite application interne,
ca se fait sans difficultés.

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
Jean Naimard
merci pour ces infos je vais essayer


"jean-marc" a écrit dans le message de news:
4318356f$0$21777$
"Jean Naimard" wrote in message
news:df8p1g$6uv$
> houps, bien sur le RemoteHost est different sur les postes
>
> "Jean Naimard" a écrit dans le message de


news:
> df7oco$lc7$
> >
> > "Jean-Marc" a écrit dans le message de
> news:
> > 43173aa5$0$18262$
> > > "Jean Naimard" a écrit dans le message de
> > > news:df7b5p$lgj$
> > > > Bonjour,
> > > >
> > > > Je doit modifier un programme qui tourne sur 2 pc et qui


communique
> via
> > > > winsock en udp.
> > > > Il faut que je rajoute un 3eme pc. pouvez vous me donner une idée
pour
> > > faire
> > > > communiquer ce 3eme pc.
> > >
> > > Hello,
> > >
> > > impossible de répondre sans savoir un minimum
> > > en quoi consiste les échanges. Si il s'agit d'informations
> > > qui ne nécessitent pas de connaitre l'émetteur pour pouvoir
> > > être utilisées et si une information donnée est toujours utile à


tous,
> > > alors tu auras peu à réécrire (je pense).
> > > Si en revanche l'introduction du 3eme PC implique qu'il faut en plus
> > > déterminer l'émetteur et le récepteur, alors tu auras plus à


réécrire.
> > > Si c'est de l'UDP utilisé juste pour broadcaster des infos


publiques,
> > > tu n'auras peut être carrément rien à réécrire.
> > > Bref, il faut voir, c'est au cas par cas.
> > >
> > > --
> > > Jean-marc
> > > "There are only 10 kind of people
> > > those who understand binary and those who don't."
> > > mailto: remove '_no_spam_' ;
> > >
> >
> > merci pour ta réponse
> >
> > Voici si dessous le style tres simplifié de la com en question
> >
> > **** pour le premier poste *****
> > Private Sub Form_Load()
> > Reseau(0).LocalPort = "6002"
> > Reseau(0).RemotePort = "6001"
> > Reseau(0).RemoteHost = "REIMS-RMS-162"
> > Reseau(0).Bind
> > End Sub
> >
> > Private Sub Reseau_DataArrival(Index As Integer, ByVal bytesTotal As
Long)
> > Dim reponse_Reseau(0) As String
> > Reseau(0).GetData reponse_Reseau(0)
> > Lb_Poste.Caption = Mid(reponse_Reseau(0), 1, 2)
> > Lb_reception.Caption = Mid(reponse_Reseau(0), 3)
> > End Sub
> >
> > Private Sub Timer1_Timer()
> > Reseau(0).SendData "P1" & Txt_Emission.Text ' les deux 1er
> caractetes
> > designe l'emeteur
> > End Sub
> >
> > **** pour le deuxieme poste *****
> > Private Sub Form_Load()
> > Reseau(0).LocalPort = "6001"
> > Reseau(0).RemotePort = "6002"
> > Reseau(0).RemoteHost = "REIMS-RMS-162"
> > Reseau(0).Bind
> > End Sub
> >
> > Private Sub Reseau_DataArrival(Index As Integer, ByVal bytesTotal As
Long)
> > Dim reponse_Reseau(0) As String
> > Reseau(0).GetData reponse_Reseau(0)
> > Lb_Poste.Caption = Mid(reponse_Reseau(0), 1, 2)
> > Lb_reception.Caption = Mid(reponse_Reseau(0), 3)
> > End Sub
> >
> > Private Sub Timer1_Timer()
> > Reseau(0).SendData "P2" & Txt_Emission.Text
> > End Sub


Hello,

Je vois.

Le principe de la communication est vraiment
fait pour 2 PC, et pas d'autres.
Il faut revoir le principe de base. Ce n'est pas
compliqué ici car les échanges d'infos sont vraiment
simples.

// Ce qui suit n'est paut être pas du tout adapté à ton cas
// particulier. C'est juste basé sur ma compréhension
// à partir du petit bout de code.

Si je devais faire ceci, je crérais 2 programmes:

Un serveur, qui tournerais sur une machine qui est
toujours allumée ou au moins qui est allumée quand 1
au moins des clients est allumé. Si nécessaire, le
serveur peut tourner sur un des postes clients (1 des 3 PC).

Un programme Client (le même pour les 3 PC).

Je ferais en TCP plutot qu'en udp (mais bon, peu importe ici)
et je ferais transiter toutes les infos via le serveur, qui
doit au minimum savoir qui est connecté. Il a aussi la charge
d'acheminer les infos d'un Emetteur (E) vers le ou les
destinataires (D).

Le serveur recevra 2 types de message:
- message "de service" : connection
"Je suis le CLIENT X qui me connecte"
- message "de service" : QUI EST LA
"QUI EST LA"
- message "normal"
"JE DIS AU CLIENT Y:COUCOU"
"JE DIS A TOUS:HELLO"

Il utilisera les connections pour garder une table des
clients connectés. Il aura aussi la charge d'enregistrer
les déconnections des clients.
Il fera le relai de tous les messages "normaux" en les envoyant
vers le ou les destinataires (clients).

Le programme client peut:
* envoyer au serveur 2 type de messages
- message de service
- "QUI EST LA"
- "JE SUIS X, JE ME CONNECTE"
- message normal
"JE DIS AU CLIENT Y:COUCOU"
"JE DIS A TOUS:HELLO"
* Recevoir 2 types de réponses
- messages de service:
- "VOICI LES CLIENTS : A, B, C"
- "CONNECTION ACCEPTEE"
- messages normaux:
- "LE CLIENT A TE DIT:COUCOU"

Voila, un peu simplifié, ce que je ferais. En fait
je l'ai déjà fait pour une petite application interne,
ca se fait sans difficultés.

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;