comme j'avance enormement pour mon client ftp (g quasiment fini manque le telechargement de dossier et le chemin des fichier telecharger)
et parfois la connection est instanner (login et tout)!!
comme j'avance enormement pour mon client ftp (g quasiment fini manque le telechargement de dossier et le chemin des fichier telecharger)
et parfois la connection est instanner (login et tout)!!
Bon j'up ce topic parce que je suis confronté au même problème:
En résumé j'ai fait une appli client serveur. Mon server tourne sur une machine distante en LAN que je ping a 10ms. Mon client tourne sur mon pc.
Le temps nécessaire à l'établissement d'une connection dans cette configuration est de l'ordre de 5 à 6 secondes (j'ai fait plusieurs tests avec affichage de date.getTime()).
En local (server et client sur la même machine) le temps nécessaire à la connection est de l'ordre de 50ms, donc quasi instantané.
Je comprends pas d'où ça peut venir, et surtout ça m'embête assez, c'est pas super viable surtout quand on sait que le logiciel est destiné à une entreprise. 10ms de ping et 6 secondes pour une connection...
(ps: oui, mon code est bon a priori je l'ai montré à quelqu'un déjà et il m'a rassuré, je peux néanmoins le poster sans souci).
Merci d'avance!
+1, je n'ai pas encore de solution a ce probleme systématique...
ouais bon c trop pour que se soit une coincidence ils y a plusieur possibiliter :
- soit on code tous comme des cochon
-soit on a des connection de merde
-soit internet commence a sature
-soit c java qui ne marche pas tres bien
-ou alors tout simplement c normal
Je ne code pas comme un cochon ( enfin je pense, apres revue de mon propre code), ma connection LAN est impec, je ne passe pas par Internet.... je ne pense pas que Java soit en cause. Plutot une configuration, une politique de sécurité, etc... faut creuser !
Oui je suis exactement dans ce cas là. Je me connecte en LAN sur un server qui est pas chargé du tout et que je ping très bien.. je sais pas ce qui est en cause je vais demander autour de moi si la machine a des problèmes mais bon...Envoyé par xterminhate
J'ai des échos d'autres personnes pour qui les connections socket en java passent nickel. Mais on est pas mal à avoir ce soucis, donc je sais pas trop quoi penser. En tout cas je me sens moi seul
Sous quel environnement vos tests ont-il été effectués?
Bien le bonjour chez vous
Jowo
Client: win NT
Serveur: SunOS
Je rajoute qu'entre deux pc sous win NT de mon bureau, la connexion se fait en 1s maximum.
Comme je ne sais pas où est situé mon server distant (celui auquel je me connecte en 6s), il est possible qu'il soit derrière plusieurs routeurs et éloigné physiquement, mais je le ping a 10ms.. donc la liaison est bonne.
Attention PING n'utilise pas le protocole TCP ou UDP. Il emploie le protocole ICMP (Internet Control Message Protocol).
Pour ce genre de test (accés à un serveur), j'utilise telnet.
Essaie de te connecter avec telnet pour déterminer le temps de connection.
Bien le bonjour chez vous
Jowo
Bien vu!Envoyé par jowo
J'ai constamment des sessions telnet ouvertes sur cette machine, et non seulement moi, mais aussi plusieurs collègues, jamais de souci de ce côté. C'est très réactif, connection instantanée.
(je ne sais pas comment je pourrais estimer le temps nécessaire à l'élaboration d'une connection précisément)
as-tu utilisé la commande "telnet hostname 21" pour accéder à ton serveur sur le port par défaut du FTP?
Pour déterminer le temps de connection, je vais à l'estimation. Tu remarques si le serveur te réponds immédiatement ou pas.
Bien le bonjour chez vous
Jowo
Euh je pige pas bien pourquoi tu veux que je test ça, mais oui je l'ai fait. Connection immédiate là encore.Envoyé par jowo
Telnet connection immédiate
FTP connection immédiate
Java socket connection 6s...
Ok
Pour ce bout de code j'obtiens des temps de connexion de l'ordre de 300ms pour le serveur 'ftp.FreeBSD.org'.
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 public static void main(String[] args) { String host = "ftp.FreeBSD.org"; int port = 21; if (args.length >= 1) { host = args[0]; if (args.length >=2) { try { port = Integer.parseInt(args[1]); } catch (NumberFormatException nfe) { } } } try { long start = System.currentTimeMillis(); Socket socket = new Socket(host, port); long duration = System.currentTimeMillis() - start; socket.close(); System.out.println("Connexion à " + host + ":" + port + " en "+ duration + "ms"); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
Quels sont les vôtres?
Bien le bonjour chez vous
Jowo
client sous winXP, serveur sous Linux (mandriva).
Le client prend 5 à 6 seconde à chaque connexion. Il me semble que le serveur accepte les connexion de manière instantanée si le client le permet (c/c++).
Malheureusement les ftp extérieurs sont bloqués au boulot. Je ne peux donc pas tester.Envoyé par jowo
Mais avec ton serveur FTP et avec mon bout de code, tu as toujours six secondes comme temps de connexion?
Bien le bonjour chez vous
Jowo
Mon bout de code est très sensiblement le même donc je vais te dire oui, a priori, je mets mon bout de code:Envoyé par jowo
Y'a pas trop de souci de ce côté là je pense. host et port sont déclarés et initialisés plus haut.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public void connexion() { try { logger.info("trying connexion on " + host + ", on port " + port); Date date1 = new Date(); connexion = new Socket(InetAddress.getByName(host), Integer.parseInt(port)); Date date2 = new Date(); System.out.println(date2.getTime()-date1.getTime()+"ms to connect");
As-tu testé avec directement avec l'adresse IP de ton serveur FTP?
Bien le bonjour chez vous
Jowo
En fait je ne fais pas de FTP hein, juste je connecte client et server via sockets. (mon server aussi est en java)Envoyé par jowo
Mais oui, dans ma variable host, il y a une ip et pas un alias. C'est vrai qu'on aurait pu penser qu'il mettait du temps pour résoudre le nom, bien vu encore!
Encore un autre test (le dernier aujourd'hui), nous allons construire la connexion étape par étape
Voici ma sortie:
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 public static void main(String[] args) { Socket socket = new Socket(); // l'adresse IP de la cible start = System.currentTimeMillis(); InetAddress ipAddr = InetAddress.getByName(host); duration = System.currentTimeMillis(); // Socket de la cible start = System.currentTimeMillis(); InetSocketAddress endPoint = new InetSocketAddress(ipAddr, port); duration = System.currentTimeMillis() - start; System.out.println("endPoint en " + duration+ "ms"); // Socket locale if (!socket.isBound()) { start = System.currentTimeMillis(); socket.bind(null); duration = System.currentTimeMillis() - start; System.out.println("Bind en "+ duration + "ms"); } System.out.println("Est-on connecté? " + socket.isConnected()); // Création de la connexion start = System.currentTimeMillis(); socket.connect(endPoint); duration = System.currentTimeMillis() - start; System.out.println("Connexion à " + host + ":" + port + " en "+ duration + "ms"); // Properties of the current socket System.out.println("Socket: " + socket); socket.close(); }
endPoint en 0ms
Bind en 0ms
Est-on connecté? false
Connexion à ftp.FreeBSD.org:21 en 172ms
Socket: Socket[addr=ftp.FreeBSD.org/204.152.184.73,port=21,localport=2727]
Bien le bonjour chez vous
Jowo
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