Bonjour tous le monde,
j'aimerai effectué une connexion FTP avec System.Net.Sockets en passant par un proxy.
C'est possible ?
Si oui, comment faire ?
Bonjour tous le monde,
j'aimerai effectué une connexion FTP avec System.Net.Sockets en passant par un proxy.
C'est possible ?
Si oui, comment faire ?
Utilise la classe FtpWebRequest (dans le namespace System.Net), plutôt que de réinventer la roue... elle permet, entre autres, de spécifier le proxy à utiliser
Malheureusement, j'utilise un composant maison que je dois adapter ...
j'aurais bien voulu moi, passer par FtpWebRequest ...![]()
Aïe... ça se complique alors
Je pense qu'il faut implémenter le protocole du proxy, mais je sais pas trop comment ça marche...
Tu auras peut-être plus de chances sur un forum plus spécialisé sur le développement réseau, celui là par exemple. Dis moi si tu veux que je déplace la discussion.
oui, va y, déplace
merci pour le lien, je vais regarder déjà s'il y a des infos
En plus, c'est du .net 1.1 ...
Bonjour,
j'ai trouvé une classe C# pour me connecter à un serveur via un proxy.
Problème, j'ai l'erreur suivante :
Quelqu'un pourrait-il m'expliquer ?Une connexion existante a dû être fermée par l'hôte distant.
Ca veut dire que le serveur, ou le proxy, a interrompu la connexion...
Pour info, c'est quoi la classe que tu as utilisée ?
Une classe (en fait un ensemble de classe) que j'ai récupéré sur le site
http://www.mentalis.org/
Bonjour,
je développe aussi une classe FTP et je cherche le protocole proxy.
Je suis allé sur le site http://www.mentalis.org/soft/class.qpx?id=9
Mais c'est compliqué il y a 4 types proxy :
HTTP1.1,
SOCK4,
SOCK4A,
SOCK5
En plus, il y a des proxy FTP :
SITE,
USER après logon,
Proxy OPEN,
Transparent,
USER RemoteID@RemoteHost,
USER FireID@Remotehost,
USER RemoteID@RemoteHost FireID,
USER RemoteID@FireID@RemoteHost
je suis perdu
J'ai trouvé ce document : http://www.codeproject.com/KB/cpp/ProxyFtp.aspx
mais je ne comprend pas comment on peut spécifier un port si le serveur qu'on veut atteindre n'est pas sur le port 21
EDIT :
il suffit de faire adresse_de_mon_serveur:port !!! Cool non ?
J'ai réussi à implémenter la classe
La connexion FTP fonctionne nickel, avec ou sans proxy :j'arrive à gérer les deux cas.
Cependant, je suis confrontée à un autre problème à présent :
Lorsque je vais uploader un fichier, j'ai une erreur 500
Le log est le suivant :
Mon code est ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 PUT "D:\USER\TEMP\monFile.xip" 500 Syntax error, command unrecognized.
En sachant que this._clientSocket est de type proxySocket qui lui même hérite de la classe System.Net.Socket
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 private void execute(String command) { if(this._debug == true) this._trace += "\n" + command; byte[] cmdbytes = this._encode.GetBytes((command + "\r\n").ToCharArray()); this._clientSocket.Send(cmdbytes, cmdbytes.Length, SocketFlags.None); this.readReply(); }
J'appelle la méthode ainsi :
Lorsque je me connecte via une fenêtre dos, et que je tape la commande, elle fonctionne... mais lorsque je passe par mon application, ça plante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part this.execute(@"PUT ""D:\USER\TEMP\monFile.xip""");
Une idée ?
Le chemin du fichier est bien correct, car je test sur ma machine de développement.
Quand à la commande, je dois utiliser la commande PUT, car le fichier doit être déposé "in one shot"
Attention, là tu confonds commande de l'utilitaire ftp (ftp.exe) qui implémente la commande PUT et la commande FTP qui est STOR.
Apparemment la commande PUT existe, mais n'est pas définie dans la RFC 959
http://en.wikipedia.org/wiki/List_of_FTP_commands
Mais je sais pas quelle est la différence entre PUT et STOR...
A priori (pour celles et ceux qui parlent le c#), mon problème viendrait du fait que je sois en mode actif :
Voici mon ch'tit bout de code :
this._clientSocket est une connexion FTP passant par un proxy
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 string sLocAddr = this._clientSocket.LocalEndPoint.ToString(); int ix = sLocAddr.IndexOf(':'); if (ix < 0) throw new Exception("Failed to parse the local address: " + sLocAddr); string sIPAddr = sLocAddr.Substring(0, ix); // let the system automatically assign a port number (setting port = 0) ep = new IPEndPoint(IPAddress.Parse(sIPAddr), 0); listening_sock.Bind(ep); sLocAddr = listening_sock.LocalEndPoint.ToString(); ix = sLocAddr.IndexOf(':'); if (ix < 0) { throw new Exception("Failed to parse the local address: " + sLocAddr); } int nPort = int.Parse(sLocAddr.Substring(ix + 1)); // // // start to listen for a connection request from the host (note that // // Listen is not blocking) and send the PORT command listening_sock.Listen(1); string sPortCmd = string.Format("PORT {0},{1},{2}", sIPAddr.Replace('.', ','), nPort / 256, nPort % 256); this.execute(sPortCmd); if (this._ftpCodeReturn != 200) { listening_sock.Close(); throw new Exception("Failed to on command : " + sPortCmd); } data_sock = listening_sock.Accept(); listening_sock.Close(); listening_sock = null;
Sur la ligne, data_sock = listening_sock.Accept(), ça freeze ....
En gros, je suis sensée ouvrir une connexion (qui me permettra de faire mon PUT) sur une connexion existante...
bonjour je suis débutant en C# et je développe une application pour un PPC sous Windows Mobile 5...
le programme doit envoyé un fichier sur un PC distant, jais d'abord pensé a un simple dossier partagé et faire un file.copy mais ça marche pas alor je me suis rabattue sur le ftp mais la je suis complètement perdue
je voudrais utiliser la classe System.Net.Sockets pour faire un simple up.
pouvez vous me donné un bout de votre code pour cette simple action.
merci d'avance!!!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager