PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Choix automatique du LAN
Choix automatique du LAN
Iniciado por Fred2355, 17,may. 2020 23:45 - 31 respuestas
Miembro registrado
236 mensajes
Publicado el 17,mayo 2020 - 23:45
Bonsoir,

Voici mon soucis.
J'ai une appli qui doit travailler sur deux LAN différents.
Le premier est en 192.168.0.1 et l'autre en 192.170.0.1
Comment je peux faire pour que mon appli ne perdre pas de temps à cherche une connexion sur l'un ou l'autre des LAN mais se connecter directement sur la bonne IP?
Merci pour vos suggestions.
Fred
Miembro registrado
160 mensajes
Publicado el 18,mayo 2020 - 09:57
connexion vers une BD ?
Miembro registrado
236 mensajes
Publicado el 18,mayo 2020 - 12:04
Bonjour,
non, non.
Lan 1, vers le routeur n° 1 qui m'envoi sur le net via la FO
Lan 2, vers le routeur n°2 qui m'envoi sur le net via l'ADSL.
Cdlt
Fred
Publicado el 19,mayo 2020 - 10:44
Fred2355 vient de nous annoncer :
Bonjour,
non, non.
Lan 1, vers le routeur n° 1 qui m'envoi sur le net via la FO
Lan 2, vers le routeur n°2 qui m'envoi sur le net via l'ADSL.
Cdlt
Fred


bonjour,

il doit me manquer une info car ce n'est pas votre application qui se
connecte en 1er mais la carte réseau, à moins que ce soit votre
application qui doit faire ce choix et donc écrire les données dans le
paramétrage de la carte réseau

merci de bien vouloir préciser

--
Cordialement JeAn-PhI
Miembro registrado
236 mensajes
Publicado el 19,mayo 2020 - 11:13
Bonjour Jean-Phi.

Mon équipement est pourvu de 2 port LAN.
Lors que mes deux lan sont connectés , l'un est en liaison avec le routeur qui va sur le FO et l'autre sur le routeur qui va sur l'ADSL.

J'ai besoin que mon appli (qui est capable de lire les IP en jeux) ouvre les sockets des lans considérés de façon a transmettre radidement les données.
Miembro registrado
4.362 mensajes
Publicado el 19,mayo 2020 - 12:49
Bonjour,
La syntaxe de SocketCrée est :
<Résultat> = SocketCrée(<Nom du socket> , <Numéro de port> [, <Adresse>])

Il suffit de passer l'adresse lors de la création du socket cf https://doc.pcsoft.fr/fr-FR/?3070011&name=socketcree_fonction

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
236 mensajes
Publicado el 19,mayo 2020 - 14:05
Non, Voroltinquo, ta réponse n'est pas dans le sujet.
C'est déja ce que j'ai mis comme ligne de code.
Ce que je cherche c'est à force la choix de tel ou tel lan en fonction de l'IP pour gagner du temps de traitement.
Miembro registrado
1.002 mensajes
Publicado el 19,mayo 2020 - 14:33
Bonjour,

Explique ton besoin explicitement, que doit faire ton application ?

Parce que ton Serveur soit connecté à deux lan c'est une chose, donc tu as 2 sous réseaux, tu as ton serveur qui est connecté sur deux routeur (box), qui reçoit donc 2 fois internet,

Tes appareils externe(pc, tablette, smartphone) peuvent appeler ton serveur soit depuis le lan interne (1 ou 2), soit depuis le wan (FO ou ADSL), ensuite tu veux faire quoi ?

Répondre à tes appareil ?

Jordan
Miembro registrado
236 mensajes
Publicado el 19,mayo 2020 - 15:43
Bonjour,
Mon application n'est pas destinée à tourner sur un serveur mais sur un PC sous Windows7 à 10. Le PC est pourvu de 2 cartes réseau et chaque carte réseau est connecté sur un routeur ( l'un sur FO et l'autre sur ADSL mais les deux en IP fixe) vers le monde. Au bout, une Box en IP fixe avec un PC.
Pour faire simple, mon appli fait de l'échange de fichiers. L'échange peut être soit sous forme de mail soit sous forme de tchat indépendamment de la FO ou ADSL.
Pour le moment, je déconnecte physiquement l'un ou l'autre des LAN en fonction du besoin. Mais j'aimerais que ce soit autodéterminé en fonction de l'IP du LAN.
Lan 1 192.168.0.1
Lan 2 192.168.1.1

Voila je t'ai tout dit.
Miembro registrado
4.362 mensajes
Publicado el 19,mayo 2020 - 23:06
Fred2355 a écrit :
Pour le moment, je déconnecte physiquement l'un ou l'autre des LAN en fonction du besoin.

Justement c'est ce besoin que tu ne précise pas. Soit plus clair.

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
236 mensajes
Publicado el 20,mayo 2020 - 08:53
Bonjour,
Tout les informations que je peux donner sont au dessus.
Miembro registrado
1.002 mensajes
Publicado el 20,mayo 2020 - 09:42
Bonjour,

Non tu n'explique rien, bref.

Que ton pc ait 2 connexion internet, ne sert pas a grand chose à part a qu'il garde internet quand l'un des deux tombent,

Ensuite, ton pc "reçoit" un fichier depuis 192.168.0.1(ou le wan derriere) et que 192.168.0.1 est la carte réseau primaire il répondra sur la primaire en premier, si 192.168.0.1 ne repond pas alors il ira sur la deuxieme, c'est windows qui veut ca, tu peux faire le test avec un pc en wifi et ethernet, il ira sur l'ethernet en premier car il est primaire par defaut

Pour modifier la priorité de tes carte, tu peux regarder ici https://www.windowscentral.com/how-change-priority-order-network-adapters-windows-10

Mais sous windev, je ne voit pas trop comment on peut t'aider si on a aucun detail sur le code que tu utilise

jordan
Miembro registrado
236 mensajes
Publicado el 20,mayo 2020 - 11:19
Jordan,

Merci pour ton commentaire.

Sachant que mes deux réseaux sont sur des adresses IP distinctes:
LAN 1 : 192.168.0.1/24
LAN 2 : 192.168.1.1/24

si mon appli veut envoyer un msg vers 192.168.1.1 (le LAN2) c'est de facto le LAN1 qui sera sollicité en premier même si le masque IP n'est pas le bon?
Miembro registrado
1.002 mensajes
Publicado el 20,mayo 2020 - 12:09
Il y a deux "probleme"
ton problème est sur la couche 3 et ton application est sur la couche 7, tes lan sont la couche 3, donc elle communique "rapidement", ton application est sur la couche 7, donc il y a du traitement qui rend la communication "lente"

Si ton application communique par mail/chat tu sera en couche 7 et le problème de priorité reste le meme, via les socket tu choisi vers quel sous réseau répondre, sur le lan, si tu veux répondre à un périphérique sous le réseau WAN, tu reviens au meme problème de priorité
Miembro registrado
1.002 mensajes
Publicado el 20,mayo 2020 - 12:10
Mais par contre, tu nous as toujours pas dit ce que ton application est censé faire...
Miembro registrado
236 mensajes
Publicado el 20,mayo 2020 - 13:45
Si si,!
"...mon appli fait de l'échange de fichiers..."
Miembro registrado
4.362 mensajes
Publicado el 20,mayo 2020 - 13:49
Qui est maître ?

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
236 mensajes
Publicado el 20,mayo 2020 - 14:05
"...Pour faire simple, mon appli fait de l'échange de fichiers. L'échange peut être soit sous forme de mail soit sous forme de tchat indépendamment de la FO ou ADSL...."

IL n'y a pas de maitre car chaque PC est doté de 2 LANs et chaque PC est ammené à envoyer des fichiers soit par FO soit par ADSL en fonction du type de fichiers. C'est le type de fichier a envoyer qui va définir si le fichier doit partir par la FO ou l'ADSL. Ce n'est pas une question de taille mais de type de fichier.
Miembro registrado
1.002 mensajes
Publicado el 20,mayo 2020 - 16:53
Fred2355 a écrit :
"envoyer des fichiers soit par FO soit par ADSL en fonction du type de fichiers."

Mais pourquoi se restreindre ?? pourquoi ils sont sur adsl et fibre ?
Miembro registrado
236 mensajes
Publicado el 20,mayo 2020 - 21:13
Jordan a écrit :
Fred2355 a écrit :
"envoyer des fichiers soit par FO soit par ADSL en fonction du type de fichiers."

Mais pourquoi se restreindre ?? pourquoi ils sont sur adsl et fibre ?



Ce n'est pas se restreindre, c'est répondre à l'objet du projet.
Certains fichiers seront envoyés par ADSL, d'autre pas FO, et sans distinction de taille mais par distinction de type.
Miembro registrado
1.002 mensajes
Publicado el 20,mayo 2020 - 22:45
Je pense que je doit etre c** pour pas comprendre.

pour moi si un systeme est connecté à 2 accès à internet, c'est pour avoir un acces principal FO et un acces secours (ADSL) en cas de coupure du premier, ou alors pour faire de l'aggragation de lien.

Envoyer des fichiers par l'adsl alors qu'on a la fibre, je vois pas l'interet, mais ca doit etre moi qui n'ai pas compris

"c'est répondre à l'objet du projet", parlons-en, c'est quoi l'objet du projet ? (envoyer du courrier par la poste, alors qu'on peut le faire par mail ?;))

Jordan
Miembro registrado
962 mensajes
Publicado el 21,mayo 2020 - 01:49
hello,
je crois qu'il manque l'équivalent de la fonction bind dans la gestion des sockets de Windev.
Exemple en C# :
using System.Net.Sockets;
using System.Net;

void Main()
{
Socket clientSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

int anyPort = 0;
EndPoint localWifiEP = new IPEndPoint(new IPAddress(new byte[] { 192, 168, 22, 37 }), anyPort);
EndPoint localEthernetEP = new IPEndPoint(new IPAddress(new byte[] { 192, 168, 1, 82 }), anyPort);

clientSock.Bind(localWifiEP);

// Edit endpoint to connect to an other web-api
// EndPoint webApiServiceEP = new DnsEndPoint("www.myAwsomeWebApi.org", port: 80);
EndPoint webApiServiceEP = new DnsEndPoint("www.google.com", port: 80);
clientSock.Connect(webApiServiceEP);

clientSock.Close();
}


--
Ami calmant, J.P
Miembro registrado
236 mensajes
Publicado el 21,mayo 2020 - 11:11
Bonjour,
Merci pour cette excellent réponse!!!!!
Je vais tester si je ne pourrais pas ouvrir 2 Sockets simultanées, une vers une IP et l'autre vers l'autre IP.
Peut être serait ce la solution?
A suivre.
Miembro registrado
4.362 mensajes
Publicado el 21,mayo 2020 - 11:21
Oui, c'est la solution cf post #6

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
236 mensajes
Publicado el 21,mayo 2020 - 13:57
Non, dans ta solution qui renvoi sur le DOC de PCsoft sur lequel j'ai développé la base de mon appli, il n'est pas dit comment traiter 2 socket simultanées.
Publicado el 22,mayo 2020 - 10:55
Jurassic Pork a formulé la demande :
hello,
je crois qu'il manque l'équivalent de la fonction bind dans la gestion des
sockets de Windev.
Exemple en C# :
using System.Net.Sockets;
using System.Net;

void Main()
{
Socket clientSock = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);

int anyPort = 0;
EndPoint localWifiEP = new IPEndPoint(new IPAddress(new byte[] { 192,
168, 22, 37 }), anyPort);
EndPoint localEthernetEP = new IPEndPoint(new IPAddress(new byte[] { 192,
168, 1, 82 }), anyPort);

clientSock.Bind(localWifiEP);

// Edit endpoint to connect to an other web-api
// EndPoint webApiServiceEP = new DnsEndPoint("www.myAwsomeWebApi.org", port:
80);
EndPoint webApiServiceEP = new DnsEndPoint("www.google.com", port: 80);
clientSock.Connect(webApiServiceEP);

clientSock.Close();
}


bonjour,

je ne suis pas un spécialiste de C#, mais pour ma culture perso
j'aiemrais comprendre.

d'après ce que je lis et comprend, qu'en fonction de ce que l'on
souhaite le programme va utiliser une interface réseau spécifique pour
ouvrir et écrire un socket

je suppose que les sockets C# et WinDev fonctionne de la même manière à
savoir le socket se connecte sur une ressource distante et de l'autre
côté il y a un socket d'écoute et vice versa pour le retour

si je ne me suis pas trompé, je vois bien comment échanger du texte et
des fichiers mais pas du tout comment échanger des mails par socket.

un peu d'explication est la bienvenue

--
Cordialement JeAn-PhI
Miembro registrado
4.362 mensajes
Publicado el 22,mayo 2020 - 12:26
JeAn-PhI a écrit :
si je ne me suis pas trompé, je vois bien comment échanger du texte et
des fichiers mais pas du tout comment échanger des mails par socket.

Dans le ca présent, il faut créer une table de routage en fonction de l'IP et envoyer le contenu sous forme de buffer + crc

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
4.362 mensajes
Publicado el 22,mayo 2020 - 12:45
Le socket aura bien entendu été ouvert en mode UDP

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
236 mensajes
Publicado el 22,mayo 2020 - 17:33
JeAn-PhI a écrit :

si je ne me suis pas trompé, je vois bien comment échanger du texte et
des fichiers mais pas du tout comment échanger des mails par socket.


Bonjour JeAn-PhI

Dans mon projet je ne travaille pas sur l'envoi de mail. Mais juste sur l'envoi de fichier.
En fonction du type de fichier, je dois passer par le LAN1 ou par le LAN2.
Ce que je fais avant le LAN ou aprés le LAN , à comprendre par là avant d'envoyer le fichier "contenu, extension,..." ou lorsqu'il a été reçu en face. (ou inversement car le distant peu aussi avoir besoin d'envoyer un fichier) n'affecte le choix du LAN à utiliser. C'est mon application, qui décide d'envoyer le fichier par le LAN 1 ou le LAN2, selon le type de fichier qui doit être envoyé. L'opérateur n'ayant pas la vu sur le lan choisi. Ce n'est meme pas une question de QoS du reseau ou de débit.
C'est pour ca que je cherche a faire que mon appli puisse identifier le LAN à employer.

Apparement et selon Jurassic Pork ceci ne serait pas faisable avec WinDev.
Miembro registrado
962 mensajes
Publicado el 22,mayo 2020 - 17:52
hello,
ce n'est pas faisable avec Windev mais c'est faisable dans windev en utilisant un assemblage dotnet :
1 - Ajouter l'assemblage dotnet system à sont projet.
Exemple de code pour se connecter à un socket en mode SocketSansMarqueurFin
Déclaration globale d'une fenêtre
Procedure Fenetre_client_socketc#(gfsServeur,gfsBind)
// gfsServeur Adresse I.P du serveur
//gfsBind Adresse I.P de l'interface choisi
clientSock est un Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp)


Initialisation de la connexion :
monAdresseIP est un IPEndPoint(IPAddress.Parse(gfsBind),0)
maDestination est un DnsEndPoint(gfsServeur,5010)
clientSock.Bind(monAdresseIP)
clientSock.Connect(maDestination);


Femeture de la connexion sur fermeture de la fenêtre :
// Fermeture de la connexion
SI clientSock.Connected ALORS
// zbytes est un tableau d'entier sans signe sur 1 octet
// elemPartis est un entier
// zbytes=Encoding.Default.GetBytes("BYE");
// elemPartis = clientSock.Send(zbytes)
clientSock.close()
FIN


Envoi d'une chaîne :
SI clientSock.Connected ALORS
zbytes est un tableau d'entier sans signe sur 1 octet
elemPartis est un entier
zbytes=Encoding.Default.GetBytes(SaisieTexte);
elemPartis = clientSock.Send(zbytes)
Trace(elemPartis)
FIN


Si le serveur socket est en windev attention au mode de transmission (marqueurs)

--
Ami calmant, J.P
Miembro registrado
236 mensajes
Publicado el 04,junio 2020 - 21:04
Bonsoir Jurassic Pork

Merci pour tes excellents commentaires. Je me suis rapproché d'un collegue qui m'a aidé sur le DotNet que je ne connais pas.
Tes codes trés utiles m'ont permis de faire un saut dans le développement de mon projet.

Encore merci.
Miembro registrado
1.173 mensajes
Publicado el 09,junio 2020 - 11:12
Bonjour,

Cela n'aurait pas fonctionné en créant des connecteurs réseau avec Windows ?

--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net