2 questions sur les DDE (+ explication sur ce que j'ai déjà fais)

Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 7 mars 2007 à 15:45
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 8 mars 2007 à 14:17
Bonjour,
Je me pend la tête
depuis ce matin pour faire marcher une DDE et je viens de trouver ( en
local).

Petit récapitulatif pour ce qui ne saurais pas
faire de DDE (a moi sa m'aurais servie ce matin)
:
*********************************************************************************************
Il
faut par exemple utilisé le code suivant pour ce connecter à
une application (Je l'ai trouver dans le Code :
"http://www.vbfrance.com/codes/COMMUNICATION-DDE_29051.aspx"
qui m'a permit de faire fonctionner ma DDE et de un peut comprendre
tout cas merci à toi [auteur/PROTEUS91/188838.aspx PROTEUS91])
:

Private Sub DDE_CONNECT(DESTINATION_CONTROLE As
Object, SOURCE_CONTROLE As String, SOURCE_EXENAME As String,
SOURCE_DDENAME As String)
On Error GoTo
NO_CONNECTION_EXIST                              
'GESTION D'ERREUR SI LE FICHIER ECOUTE N'EST PAS OUVERT
   
With DESTINATION_CONTROLE                                  
'SELECTIONNE LE CONTROLE A CONNECTER
       
.LinkItem = SOURCE_CONTROLE                            
'DEFINIT LE CONTROLE A ECOUTER
       
.LinkTimeout = 50
       
.LinkTopic = SOURCE_EXENAME & "|" &
SOURCE_DDENAME      'DEFINIT LE FICHIER ET
LE NOM DU DDE A ECOUTER
       
.LinkMode = 1                                          
'CONNECTE LE DDE
    End With
Exit Sub
   

NO_CONNECTION_EXIST:                                           
'GESTION D'ERREUR
    MsgBox "No connection
existing...", vbCritical, "Warning"

End
Sub

Ensuite on appel cette procédure avec les
référence qui vont bien (DESTINATION_CONTROLE
est l'objet qui dois être lié, SOURCE_CONTROLE est le
nom de l'objet "pointé", SOURCE_EXENAME est le nom
de l'exécutable serveur, et SOURCE_DDENAME le nom DDE, heeee
je sais pas comment dire mieux). La petite subtilité qui m'a
posé problème est qu'il faut que dans la form contenant
l'objet pointé donc coté serveur (soit par exemple
"Form1" contenant "Texte1") les paramètres
LinkMode soit à 1 et LinkTopic est la même donnée
que SOURCE_DDENAME. Donc voila avec tout cas ma DDE
marche .

*********************************************************************************************

Alors
voila mon problème :
Pour bien faire il me faudrais 2
choses supplémentaire :
1) Est-il possible au niveau
serveur de savoir combien de clients sont actuellement connecté?
2)
J'ai lut quel que part qu'il est possible de faire des DDE sur LAN et
là aucune idée (je suppose qu'il faut le nom de la
machine serveur ou sont IP mais je ne sais pas comment faire).

Merci
par avance


Amicalement

4 réponses

Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
7 mars 2007 à 16:05
Heeeeee, pardon j'oubliais : Le tout est en VB6 et dois ensuite fonctioné sur du Windows 2000 et XP.
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
7 mars 2007 à 16:46
Bon bà je sais compter les client .

Les évenements "LinkOpen" et "LinkClose" existe pour la form qui recois ma DDE donc un simple compteur fais l'affaire pour connaitre le nombre de client soit :
*****************************************************************
Private NbClient As Long
Private Sub Form_LinkOpen(Cancel As Integer)
    NbClient = NbClient + 1
End Sub

Private Sub Form_Load()
    NbClient = 0
End Sub
*****************************************************************

Par contre maintenant il me réste à connecter ma DDE par réseau (à priorie il faut activer le sérvice "DDE réseau"). Ha et également une fois fait à connaitre les différant IP (ou nom de poste) de mes clients, et bien sure savoir le quel de ma liste de déconnécte quand c'est le cas.
Je marquerais ce poste comme "Réponce acceptée !" dé que j'aurais mes autre réponce (j'ai remarquer que si je note ma question comme étant résolut plus grand monde ne viens lire mes postes)

A+
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
7 mars 2007 à 16:49
Hé mais y manque un bout de code!!! Oups
************************************
Private NbClient As Long

Private Sub Command1_Click()
    MsgBox "Nombre de client : " & NbClient
End Sub

Private Sub Form_LinkClose()
    NbClient = NbClient - 1
End Sub

Private Sub Form_LinkOpen(Cancel As Integer)
    NbClient = NbClient + 1
End Sub

Private Sub Form_Load()
    NbClient = 0
End Sub
*********************************

Voila comme cas il y a tout (même le code du bouton qui donne les nombre de clients dans un message box )
A+
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
8 mars 2007 à 14:17
Je
me sent tout seul

Je
ne sais toujours pas faire de DDE réseau

Bon
j'ai une idée que je voudrais exploité mais je
n'arrive pas à la mettre en place (c'est une façon de
demandé de l'aide). Voila le principe :
1)
On exécute le serveur (logique)
2) On exécute un
client et on le fais se connecter au Serveur (jusque là tout
est facile, en fin quand on sais faire une DDE)
3) Lorsque
l'évènement "LinkOpen" survient au niveau
Serveur :
    a) Le serveur crée un
objet.
    b) Le serveur déclare que cette
objet est "connectable" par DDE et affecte un LinkTopic
propre à cette objet (soit par exemple
"ConnectionClientServeur0").
    c) Le
serveur transmet au client ces données (soit le nom de l'objet et le LinkTopic, à l'aide de la
DDE crée en "2)" )
    d) Le
serveur déconnecte le client (ou le client se déconnecte une fois reçu les données).
    e) Si
l'objet nouvellement crée (en "b)") n'est pas
connecter par DDE au bout de X secondes alors l'objet est
détruit.
    f) Remarque : Si une seconde
connexion surviens avant que le Serveur ne déconnecte la
premierre cette connexion est retarder pour n'avoir qu'une connexion
active simultanément sur un même objet (l'objectif est
de pouvoir savoir avec quel client le serveur "discute")
4)
Dé qu'un client se déconnecte l'objet crée sur
le serveur est détruit.

Mon problème est que je
veut crée la class sur la quel se base les objets se
connectant en DDE et je n'y arrive pas
. Je pense qu'il faudrais que
cette class érite d'une autre (en fin c'est ce qui me parais
le plus simple) pour ne pas avoir à redéfinir les
propriétés et les méthodes utilisé par
les DDE (à moins que cela existe dans tout les objet mais je
ne pense vraiment pas). Le mieux pour moi serais deux DDE par client.
Soit une qui permet d'envoiler des données du serveur vers le
client et une autre qui permet des communications dans le sens
inverse (des testes sont à faire pour savoir si le mieux est
de faire deux objets, ou un lié dans les deux sens, votre
havie m'intéresse)



Oui sauf que pour que le serveur se connect au client il faudrais que ce dit serveur connaisse l'IP du client (je rappel que en final ca dois marcher en réseau) et là aucune idée (à moin qu'une DDE soit bi-directionel ce que je ne pense pas, hà oui, je sais récup mon IP, merci à ZedMatriX son code m'a bien aidé)
En espérant une réponse (ou une question m'irais aussi, mais
j'ai besoin d'aide !!!)

Amicalement
0
Rejoignez-nous