Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

FTP

12 réponses
Avatar
Christian Hugoud
Bonjour à tous,

Je voudrais créer une app Client/Serveur, en utilisant le contrôle Internet
standard, en mode FTP. Ma question :

est-ce qu'une app VB6 utilisant ce contrôle peut servir de serveur FTP (pas
de client) ?

Merci

10 réponses

1 2
Avatar
Jacques93
Bonjour Christian Hugoud,
Christian Hugoud a écrit :
Bonjour à tous,

Je voudrais créer une app Client/Serveur, en utilisant le contrôle Internet
standard, en mode FTP. Ma question :

est-ce qu'une app VB6 utilisant ce contrôle peut servir de serveur FTP (pas
de client) ?




Si tu parles du composant msinet.ocx, je ne pense pas :

<http://msdn.microsoft.com/en-us/library/aa239740(VS.60).aspx>

concernant le mode FTP, il s'agit d'un client, ou alors j'ai mal lu.

Avec les composants de base de VB, il est cependant possible d'écrire un
serveur FTP, ceci avec le contrôle Winsock. Cela implique toutefois
d'implémenter le protocole FTP :

<http://www.faqs.org/rfcs/rfc959.html>

ou en français :

<http://www.iprelax.fr/ftp/ftp_rfcfr.php>

Deux choses à prévoir dès le début, je dirai :

- Les connexions multiples et simultanées. Pour cela, on peut avoir
un socket de base d'indice 0, toujours à l'écoute (en fait 2 : socket de
contrôle, et socket de données) et de charger dynamiquement une nouvelle
paire de socket, via :

Load sckControl (i)
Load sckData (i)

lors d'une demande de connexion. Puis décharger ces contrôles en fin de
connexion via Unload. Et en fonction de la machine (disponibilité,
puissance, etc...) imposer un maximum de connexions simultanées,
anonymes ou pas.

- La seconde chose importante est de choisir le type de serveur (Unix
L8, Windows_NT, DOS, etc). Cela conditionne d'une part, la réponse à la
commande SYST, qui permet au client de savoir à quel type de serveur il
a à faire, et surtout sous quel format le contenu des répertoires est
renvoyé. En fait c'est le client qui doit interpréter, et il y a des
dizaines de type de serveurs. De ce point de vue l'écriture d'un serveur
est plus simple que celle d'un client.

A noter qu'on peut très bien avoir un serveur Windows sous Unix, ou
l'inverse : l'important étant le format des données ( surtout des
répertoires). Tu peux vérifier avec la commante ftp en ligne de commande
et IE, ou un autre logiciel spécialisé type FileZilla sur le site :

ftp.microsoft.com


- J'ajouterai un dernier point, mai que l'on peut faire évoluer
ensuite, ce sont les commandes non 'standard' implémentées (commandes FEAT)

- A voir également la gestion des autorisations d'accès en écritures
(si elles sont autorisées).

Rien n'est insurmontable, mais il y a quand même pas mal de chose à voir.

Sinon tu peux aussi jeter un coup d'oeil sur IIS (non disponible sous XP
Home, me semble t-il), qui intègre entre autre un serveur FTP :

<http://www.microsoft.com/WindowsServer2003/iis/default.mspx>

<http://www.generation-nt.com/installer-un-serveur-ftp-avec-iis-article-24744-1.html>

--

Cordialement,

Jacques.
Avatar
Christian Hugoud
Merci Jacques,

En fait il s'agit d'un programme VB6 qui communique avec un autre programme
VB6 (le même en fait, un serveur, un client) via le réseau, qui peut être
l'Internet.

L'objectif est de transférer des fichiers, qui peuvent être lourds, d'un PC
vers l'autre.

Pour les sockets, j'y avais pensé. Seulement, il y a quelques années, et
sous VB5, il y a avait de réels pb au dessus de 1.024 Octets de données. Les
sockets fonctionnaient très bien pour transmettre des commandes, mais pas
pour les fichiers. Peut-être cela a-t-il changé ?

C'est pourquoi je me suis tourné vers FTP, sachant que les séquences de
commandes seront passées par sockets. Du coup, j'ai moins de pb avec les
standards FTP lorsque le soft se connecte à une autre instance de lui-même.

Il y aura bien des logs simultanés.

Qu'en penses-tu ?

Christian


"Jacques93" a écrit dans le message de news:

Bonjour Christian Hugoud,
Christian Hugoud a écrit :
Bonjour à tous,

Je voudrais créer une app Client/Serveur, en utilisant le contrôle
Internet standard, en mode FTP. Ma question :

est-ce qu'une app VB6 utilisant ce contrôle peut servir de serveur FTP
(pas de client) ?




Si tu parles du composant msinet.ocx, je ne pense pas :

<http://msdn.microsoft.com/en-us/library/aa239740(VS.60).aspx>

concernant le mode FTP, il s'agit d'un client, ou alors j'ai mal lu.

Avec les composants de base de VB, il est cependant possible d'écrire un
serveur FTP, ceci avec le contrôle Winsock. Cela implique toutefois
d'implémenter le protocole FTP :

<http://www.faqs.org/rfcs/rfc959.html>

ou en français :

<http://www.iprelax.fr/ftp/ftp_rfcfr.php>

Deux choses à prévoir dès le début, je dirai :

- Les connexions multiples et simultanées. Pour cela, on peut avoir un
socket de base d'indice 0, toujours à l'écoute (en fait 2 : socket de
contrôle, et socket de données) et de charger dynamiquement une nouvelle
paire de socket, via :

Load sckControl (i)
Load sckData (i)

lors d'une demande de connexion. Puis décharger ces contrôles en fin de
connexion via Unload. Et en fonction de la machine (disponibilité,
puissance, etc...) imposer un maximum de connexions simultanées, anonymes
ou pas.

- La seconde chose importante est de choisir le type de serveur (Unix
L8, Windows_NT, DOS, etc). Cela conditionne d'une part, la réponse à la
commande SYST, qui permet au client de savoir à quel type de serveur il a
à faire, et surtout sous quel format le contenu des répertoires est
renvoyé. En fait c'est le client qui doit interpréter, et il y a des
dizaines de type de serveurs. De ce point de vue l'écriture d'un serveur
est plus simple que celle d'un client.

A noter qu'on peut très bien avoir un serveur Windows sous Unix, ou
l'inverse : l'important étant le format des données ( surtout des
répertoires). Tu peux vérifier avec la commante ftp en ligne de commande
et IE, ou un autre logiciel spécialisé type FileZilla sur le site :

ftp.microsoft.com


- J'ajouterai un dernier point, mai que l'on peut faire évoluer ensuite,
ce sont les commandes non 'standard' implémentées (commandes FEAT)

- A voir également la gestion des autorisations d'accès en écritures (si
elles sont autorisées).

Rien n'est insurmontable, mais il y a quand même pas mal de chose à voir.

Sinon tu peux aussi jeter un coup d'oeil sur IIS (non disponible sous XP
Home, me semble t-il), qui intègre entre autre un serveur FTP :

<http://www.microsoft.com/WindowsServer2003/iis/default.mspx>

<http://www.generation-nt.com/installer-un-serveur-ftp-avec-iis-article-24744-1.html>

--

Cordialement,

Jacques.


Avatar
Jacques93
Christian Hugoud a écrit :
Merci Jacques,

En fait il s'agit d'un programme VB6 qui communique avec un autre programme
VB6 (le même en fait, un serveur, un client) via le réseau, qui peut être
l'Internet.

L'objectif est de transférer des fichiers, qui peuvent être lourds, d'un PC
vers l'autre.

Pour les sockets, j'y avais pensé. Seulement, il y a quelques années, et
sous VB5, il y a avait de réels pb au dessus de 1.024 Octets de données. Les
sockets fonctionnaient très bien pour transmettre des commandes, mais pas
pour les fichiers. Peut-être cela a-t-il changé ?



Il me semble avoir eu des problèmes avec la méthode SendData, que
j'avais résolu en utilisant l'Api Send :

Declare Function Send Lib "wsock32.dll" Alias "send" _
(ByVal s As Long, _
buf As Any, _
ByVal buflen As Long, _
ByVal flags As Long) As Long

s = Socket Handle qui est l'équivalent de Winsock1.SocketHandle

Je pense que c'était en VB5, j'ai fait ça il y a une bonne dizaine
d'années, et ça avait fini par marcher. Peut être est ce OK en VB6. Je
n'ai pas les sources sous la main pour vérifier.

C'est pourquoi je me suis tourné vers FTP, sachant que les séquences de
commandes seront passées par sockets. Du coup, j'ai moins de pb avec les
standards FTP lorsque le soft se connecte à une autre instance de lui-même.

Il y aura bien des logs simultanés.

Qu'en penses-tu ?




Bien en fait je ne suis pas certain de bien comprendre comment tu
envisages l'architecture de ton projet entre le FTP de MsInet.ocx et les
sockets de MsWinSck.ocx.

Mais il me semble qu'il doit être possible d'écrire la partie cliente
avec MsInet.ocx, ce qui évite d'implémenter le protocole FTP du côté
client (bien que ce soit intéressant), et d'utiliser MsWinSck.ocx pour
la partie serveur.

--

Cordialement,

Jacques.
Avatar
Jacques93
Christian Hugoud a écrit :

Jean-Marc a écrit pas mal de post sur le sujet, également sur son
serveur http, Rabbit je crois. Mais en ce moment Google Groups répond
n'importe quoi :-(

--

Cordialement,

Jacques.
Avatar
Christian Hugoud
Ok merci pour tout.

Bonne journée

"Jacques93" a écrit dans le message de news:
%
Christian Hugoud a écrit :

Jean-Marc a écrit pas mal de post sur le sujet, également sur son serveur
http, Rabbit je crois. Mais en ce moment Google Groups répond n'importe
quoi :-(

--

Cordialement,

Jacques.


Avatar
Jean-marc
Jacques93 wrote:
Christian Hugoud a écrit :



Hello,

Jean-Marc a écrit pas mal de post sur le sujet, également sur son
serveur http, Rabbit je crois. Mais en ce moment Google Groups répond
n'importe quoi :-(



Effectivement j'ai écrit un serveur HTTP (Rabbit) qui marche fort bien.

Le code source original est dispo ici:
http://www.vbfrance.com/codes/SERVEUR-HTTP-MULTISITES_36128.aspx

Epuis le serveru a énormément évolué. Il gère maintenant beaucoup
mieux l'envoi de très gros fichiers, il est beaucoup plus rapide
et gère beaucoup mieux la récupération des sockets en cas de
rupture de connection.

Bref, si quelqu'un est intéressé, je peux mettre à sa disposition
sur le web la dernière version du code.

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Jacques93
Bonjour Jean-Marc,
Jean-marc a écrit :
Jacques93 wrote:
Christian Hugoud a écrit :



Hello,

Le code source original est dispo ici:
http://www.vbfrance.com/codes/SERVEUR-HTTP-MULTISITES_36128.aspx

Epuis le serveru a énormément évolué. Il gère maintenant beaucoup
mieux l'envoi de très gros fichiers, il est beaucoup plus rapide
et gère beaucoup mieux la récupération des sockets en cas de
rupture de connection.

Bref, si quelqu'un est intéressé, je peux mettre à sa disposition
sur le web la dernière version du code.




Je suis preneur :-)
Mais passe le WE tranquille ;-)

--

Cordialement,

Jacques.
Avatar
Christian Hugoud
Super. Merci

"Jacques93" a écrit dans le message de news:
%
Bonjour Jean-Marc,
Jean-marc a écrit :
Jacques93 wrote:
Christian Hugoud a écrit :



Hello,

Le code source original est dispo ici:
http://www.vbfrance.com/codes/SERVEUR-HTTP-MULTISITES_36128.aspx

Epuis le serveru a énormément évolué. Il gère maintenant beaucoup
mieux l'envoi de très gros fichiers, il est beaucoup plus rapide
et gère beaucoup mieux la récupération des sockets en cas de
rupture de connection.

Bref, si quelqu'un est intéressé, je peux mettre à sa disposition
sur le web la dernière version du code.




Je suis preneur :-)
Mais passe le WE tranquille ;-)

--

Cordialement,

Jacques.


Avatar
Jean-marc
Jacques93 wrote:
Bonjour Jean-Marc,
Jean-marc a écrit :
Jacques93 wrote:





Bref, si quelqu'un est intéressé, je peux mettre à sa disposition
sur le web la dernière version du code.






Salut Jacques !

Je suis preneur :-)
Mais passe le WE tranquille ;-)



Pas de soucis ;-) Voila:
http://users.skynet.be/candide/jmn/rabbit.html

Bon WE !

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Jacques93
Bonjour le groupe,
Jean-marc a écrit :
Jacques93 wrote:
Bonjour Jean-Marc,
Jean-marc a écrit :
Jacques93 wrote:





Bref, si quelqu'un est intéressé, je peux mettre à sa disposition
sur le web la dernière version du code.






Salut Jacques !

Je suis preneur :-)
Mais passe le WE tranquille ;-)



Pas de soucis ;-) Voila:
http://users.skynet.be/candide/jmn/rabbit.html

Bon WE !




Beau lapin que celui ci ! je ne suis pas chasseur, sauf de bestioles
virtuelles, ou humaines, ou improbables. J' ai eu du mal a retrouver,
mais comprenne qui pourra, ou voudra :

<http://groups.google.fr/group/microsoft.public.fr.windowsxp/browse_thread/thread/60c1925a4908b367/ac201f0e977fd68b?lnk=st&q=climenole+alice+group%3Amicrosoft.public.fr.windowsxp#ac201f0e977fd68b>

Si quelqu'un a des nouvelles de CLF, Gonzo, Simili-tortue, je suis
aussi preneur :-)

PS : Les belges (Ici Victor) écrivent vraiment très bien ...

--

Cordialement,

Jacques.
1 2