Blocage des flux, réseau - Java - Programmation
Marsh Posté le 08-06-2004 à 10:33:53
c'est quoi "une sorte de plantage" ?
t'as un message d'erreur à nous donner ?
Marsh Posté le 08-06-2004 à 10:41:41
en fait j'envoie des vecteur de byte, qui vont en général d'une taille 1 jusqu'à 2000000. Sur la machine locale ça marche bien mais que quand je fais de l'affichage sur la console. En fait, je fais des SoP de temps à autres et je m'aperçois qu(il n'y a plus de données qui est envoyée.
Marsh Posté le 08-06-2004 à 10:43:23
c'est hard, là, je vois pas trop, il faudrait surveiller au niveau de l'OS.
Marsh Posté le 08-06-2004 à 10:48:17
et le probléme ne vient pas de Java puisque j'ai exactement le même en C. Et je ne pense pas qu'il est nécessaire de surveiller au nivea de l'OS. Toute maniére, je n'ai pas le niveau pour faire ça (DUT info Lille). Et de plus mon tuteur ne m'aurai pas pompé ce sujet. Et ce ...., il n'a pas de solution non plus !!
Marsh Posté le 08-06-2004 à 10:58:11
c'est sûr que si tu envoies un gros machin, forcément, c'est lent, mais il peut y avoir des stratégies pour masquer un peu la chose ou tu peux être victime d'un effet pervers (un truc à classer avec l'asphyxie de la bande montante sur les gros téléchargement en ADSL).
Marsh Posté le 08-06-2004 à 10:59:13
Connaissez vous un autre moyen, plutot que le inputStream et le OutputStream, pour envoyer des paquets d'une certaine taille. Mais il faut que les flux n'influent pas sur le calcul de la bande passante car au début j'envoyais et recevais des chaînes de caractéres mais c'est beaucoup trop long. Surtout lors de comparaisons avec un programme en C.
Marsh Posté le 08-06-2004 à 11:00:35
oui je sais que ça doit être lent, c'est logique. Mais là, il n'y a plus rien qui est envoyé ni reçu. Alors ce n'est pas le probléme.
Marsh Posté le 08-06-2004 à 11:02:39
Ah oui, j'ai aussi essayé l'expérience entre deux PC via un cable croisé et j'ai toujours le même probléme. Pourtant sur une machine locale (serveur + client), il n'y a pas de problémes (enfin, de temps à autres, car ça lui arrive aussi de bloquer). Le pire, c'est que quand je fais de l'affichage sur la console de ce que je reçois et j'envoi, et bien ça marche nickel !! Mais bon forcément, ça fausse complétement mes données.
Marsh Posté le 08-06-2004 à 11:04:30
on peut voir le code d'envoi et de réception ? j'ai comme un doute d'un coup ...
Marsh Posté le 08-06-2004 à 11:08:19
bon attend parceque c'est assez long quand même, et surtout, il n'est vraiment pas optimisé, je sais qu'il y a pas mal de modif a faire dessus !! Surtout pour l'allocation mémoire ;-)
Marsh Posté le 08-06-2004 à 11:10:24
Code :
|
Marsh Posté le 08-06-2004 à 11:12:20
le précédent c'était pour le client, voici le serveur
Code :
|
Voilà mis a part pas mal de chose à changer au niveau de l'implé, je ne vois pas ou et le probléme !! Surtout qu'à certain moment, tout fonctionne correctement.
Marsh Posté le 08-06-2004 à 11:20:25
dans le premier, il est affecté où size ?
dans le second, c'est quoi sock.getReceiveBufferSize() ?
Marsh Posté le 08-06-2004 à 11:42:17
size est affecté dans le while((size = comModel.getNextSize()), mais il n'y a aucune rreur la dedans, taille varie de 1 à x avec une progression géométrique de 2. sock.getReceiveBufferSize() retourne 8192, taille du buffer en réception par défaut.
Marsh Posté le 08-06-2004 à 11:57:54
ben là je vois pas, mais le code est pas hyper-clair, il peut y avoir un truc pas très visible.
Marsh Posté le 08-06-2004 à 12:07:51
personne n'aurai un tit exemple d'utilisation de InputStream et OutputStream qui est Propre ??
Marsh Posté le 08-06-2004 à 12:39:14
Code :
|
Marsh Posté le 08-06-2004 à 13:25:15
Pour ceux que ça intéresse voici deux petit programmes bidon qui aboutissent bien sur mon probléme.
Code :
|
Voilà amusez vous bien avec ça, j'espére que vous pourrez trouver mon p'tit probléme, ça serait vraiment cool ;-)
Marsh Posté le 08-06-2004 à 10:31:00
Bonjour à tous, je suis actuellement en stage dans une université étrangére. Dans le cadre de ce stage, je dois développer une application qui permet d'établir des statistiques sur le réseau interne, et d'autres....
Cependant, mon application est quasiment terminée mais je viens de m'apercevoir que lorsque un socket client envoie de trop gros paquets au serveur, il y une sorte de plantage.
Pour les flux, j'utilise InputStream et OutputStream.
J'ai déjà essayé de changer le buffer du socket en envoi et réception grâce aux méthodes socket.setSendBufferSize(int i)
socket.setReceiveBufferSize(int i)
Là, je ne sais plus vraiment quoi faire.
Merci d'avance pour votre précieuse aide