JAVA : probleme dans réception paquet ip
biba
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
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 - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
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)
//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********************
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 ?
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 :)!