JAVA : probleme dans réception paquet ip
Fermé
biba
-
20 déc. 2011 à 12:25
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 20 déc. 2011 à 14:18
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 20 déc. 2011 à 14:18
Bonjour,
je suis entrain de faire un système de chat avec java, la phase d'authentification marche nickel, ainsi que l'envoie du message. seulement voilà le message n'est pas réceptionné car le récepteur n'arrive pas à l'identifier comme un message texte et donc à effectuer les taches qui s'en suivent si l'identification est positive. je en sais plus ou donner de la tête car à l'envoie j'ai mis des tests et le paquet envoyé est bien du type message texte.
avez-vous déjà eu un problème de ce genre ou auriez-vous tout simplement une idée de sur pourquoi ça ne marche pas .
merci d'avance!!!
je suis entrain de faire un système de chat avec java, la phase d'authentification marche nickel, ainsi que l'envoie du message. seulement voilà le message n'est pas réceptionné car le récepteur n'arrive pas à l'identifier comme un message texte et donc à effectuer les taches qui s'en suivent si l'identification est positive. je en sais plus ou donner de la tête car à l'envoie j'ai mis des tests et le paquet envoyé est bien du type message texte.
avez-vous déjà eu un problème de ce genre ou auriez-vous tout simplement une idée de sur pourquoi ça ne marche pas .
merci d'avance!!!
A voir également:
- JAVA : probleme dans réception paquet ip
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java décompiler - Télécharger - Langages
1 réponse
KX
Messages postés
16755
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 février 2025
3 020
20 déc. 2011 à 13:07
20 déc. 2011 à 13:07
On ne va pas te donner tout ce qui pourrait éventuellement faire que ça ne marche pas, montre nous ton code, que l'on puisse tester, et on te dira pourquoi ça coince.
20 déc. 2011 à 13:12
20 déc. 2011 à 13:21
Si tu as un gros projet, effectivement ce n'est pas la peine de tout nous donner, mais au moins les méthodes d'envoi et de réception là où ça se passe mal (en expliquant bien pour qu'on puisse comprendre même sans le reste du code)
20 déc. 2011 à 13:37
//methode d'envoie du message
public void onSendMessage(){
TextMessage txtmsg= null;
MessageTexte msg=null;
int i;
try {
//recuperation du message depuis la zone ou ça a été tapée
msg= new MessageTexte(controller.getGui().getWriteZone().getText());
txtmsg = new TextMessage (msg);
controller.remoteUserselected();
//boucle pour recuperer tous les destinataires choisis pour chatter
for(i=0;i<controller.getRemoteip().size();i++){
//creation du datagramme à envoyer dans le rzo
DatagramPacket packet =new DatagramPacket(txtmsg.toBytesArray().toByteArray(),txtmsg.toBytesArray().size(),controller.getRemoteip().get(i),this.port_distant);
//ce qui suit c'est des tests qui m'ont permis de bien verifier que j'envoyer un message texte à la bonne adresse et su rle bon port
//System.out.println(controller.getRemoteip().get(i));
//System.out.println(this.port_distant);
//if (Signaux.toSignal(packet) instanceof TextMessage)
//System.out.println("ok its a text message");
//envoi du paquet
this.sendDatagramSocket(packet);
}
}
catch (UniformedMessage e) {
System.out.println("Erreur dans la recuperation du message");
}
//methode de reception du message
public void receiveDatagramSocket(){
//recuperation du message reçu
DatagramPacket packetreceive = new DatagramPacket(bufreceive,bufreceive.length);
try {
//reception sur le socket distant
this.socket.receive(packetreceive);
//j'ai mis cette ligne pour tester que effectivement le cosket rete bloqué car le code m'affiche "un paquet reçu" au moment ou j'envoie le hello qui est le message de szlutation quand tu viens de te connecter mais quand je clique sur send plus rien n'est printé sur l'ecran
System.out.println("un paquet reçu");
this.returnTypeOfSignal(packetreceive);
//treatmentDatagram() indique les taches à effectuer selon le type de signal reçu hello(connexion) goodbye(deconnexion) et textMessage
controller.treatmentDatagram();
}
catch (IOException e) {
System.out.println("Erreur dans la reception du paquet");
}
}
***********************voilà si jamais t'as des questions n'hésite pas car je reste devant le pc merci********************
20 déc. 2011 à 13:52
De plus quelle taille fait bufreceive ? Et es-tu certain que cette taille est supérieure à txtmsg.toBytesArray().size() ? D'ailleurs il vient d'où ce toBytesArray() ? Est-ce que tu es sûr que cela correspond bien à un tableau de byte comme on le fait avec getBytes ?
20 déc. 2011 à 14:08
public void openSocket(){
try {
adress = InetAddress.getLocalHost();
socket = new DatagramSocket(this.port_local,adress);
}
catch(UnknownHostException e1){
System.out.println("Erreur adresse");
}
catch(SocketException e2){
System.out.println("Erreur dans le bind");
}
}
et la taille du buffer c'est pas bien grave car si le message est longer than la taille il est tout simplement tronqué...tcp quoi!
pour ce qui est de toBytesArray() tkt je l'ai déjàs testé pour l'enoie du hello et ça marche wellou....
j'espere que j'ai répondu à ta quetion :)!