Client-server avec DatagramSocket et adresse IP publique

Résolu
PilgrimOfCode Messages postés 2 Date d'inscription vendredi 22 juillet 2011 Statut Membre Dernière intervention 24 juillet 2011 - 22 juil. 2011 à 19:29
PilgrimOfCode Messages postés 2 Date d'inscription vendredi 22 juillet 2011 Statut Membre Dernière intervention 24 juillet 2011 - 24 juil. 2011 à 20:54
Bonjour à tous,

Je me casse la tête depuis deux jours déjà sur la création d'une application java client-server avec les datagramsocket. En fait, j'arrive à échanger des données entre mon client et mon server quand l'adresse de mon server se situe dans le réseau local.
Lorsque j'essaye d'envoyer des données à mon server depuis internet (en utilisant mon ip publique pour le server), rien ne semble passer. J'ai donc tenté de modifier les paramètres de mon routeur afin de rediriger les communications entrant sur le port 8080 vers l'adresse privée de mon routeur. Ca n'a pas marché!

Voici le code du server
public class Server {

/**
 * @param args
 */
public static void main(String[]args){

String text;
byte[]tampon = new byte[2000];

try
  {
DatagramSocket socket = new DatagramSocket(8084);
    while(true)
{

DatagramPacket dg = new DatagramPacket(tampon,tampon.length);
socket.receive(dg);
text = new String(dg.getData(),0,0,dg.getLength());
if(text.equals("bye"))
  break;
System.out.println("*************************");
System.out.println( text);
System.out.println("*************************");
}
}
   catch(SocketException e )
{
System.err.println("Le serveur existe déjà ! " + e);;
e.printStackTrace();
}	

catch(IOException e)
{
System.err.println( e);;		
}	

}


Voici le code du client

package Main;

import java.net.*;
import java.io.*;

class Client{

public static void main(String[]args)
{
DataInputStream clavier = new DataInputStream(System.in);
String text,ip;
int port = 8084;
try
{
    DatagramSocket socket = new DatagramSocket();  
while(true)
{
text = clavier.readLine();
byte[] donnee = new byte[text.length()];
if(text.equals("Exit"))
  break;
text.getBytes(0,text.length(),donnee,0);
InetAddress dist = InetAddress.getByName("88.147.75.33");
DatagramPacket dg = new DatagramPacket(donnee,donnee.length,dist,port);
socket.send(dg);					
}
socket.close();
}	
catch(Exception io)
{
//System
}	

}

}


Merci à tous ceux qui prendront le temps de jetter un coup d'oeil à mon problème. Et encore plus a ceux qui répondront.

1 réponse

PilgrimOfCode Messages postés 2 Date d'inscription vendredi 22 juillet 2011 Statut Membre Dernière intervention 24 juillet 2011
24 juil. 2011 à 20:54
Finalement il y a pas de problème. C'était du au fait que je tentais d'envoyer les messages a travers internet depuis le réseau de destination. Le routeur ne considérais donc pas le message comme venant de l'internet et ne le renvoyais donc pas vers le pc souhaité.

Merci qd même.
& Joyeux codage à tous!
3
Rejoignez-nous