jonathan100
Messages postés39Date d'inscriptionjeudi 23 janvier 2003StatutMembreDernière intervention 3 juin 2003
-
7 févr. 2003 à 14:32
jonathan100
Messages postés39Date d'inscriptionjeudi 23 janvier 2003StatutMembreDernière intervention 3 juin 2003
-
7 févr. 2003 à 16:56
Bonjour a tous,
Je cherche a capturer des paquets partant d'un serveur. J'ai donc creer une socket pour me connecter a celui-ci, et je souhaite donc tout d'abord capturer un paquet.
Voici mon code:
import .....
public class main
{
int taille = 100;
byte[] tableau;
public static void main(String args[])
{
try
{
DatagramSocket un_socket = new DatagramSocket(8080);
un_socket.connect(InetAddress.getByName("adresse"), 8080);
JFrame ok = new JFrame("Voici l'adresse ou est connecte ma socket: "+un_socket.getInetAddress() + " puis verifie si elle est bien connectee: " + un_socket.isConnected() + " puis l'adresse SocketAddress du paquet: " );
ok.setVisible(true);
appel();
un_socket.disconnect();
un_socket.close();
}
catch (Exception e)
{
JFrame erreur = new JFrame("Erreur procedure Socket!");
erreur.setVisible(true);
}
}
public void appel()//capture un nouveau paquet, puis donne la SocketAddress de ce paquet
{
DatagramPacket mon_paquet = new DatagramPacket(tableau, taille);
JFrame non = new JFrame("Adresse du paquet: " + mon_paquet.getSocketAddress());
non.setVisible(true);
}
}
Un message d'erreur m'indique que j'essaie d'appeler une methode d'instance depuis une methode statique, ce qui n'est pas possible.
Je suis debutant en Java, et je voulais savoir comment a partir de ce code je pouvais capturer mes paquets. Dois-je creer une classe "Paquet" et instancier a l'interieur un objet DatagramPacket?? Comment dois-je m'y prendre.
cs_Duss
Messages postés890Date d'inscriptionlundi 8 avril 2002StatutMembreDernière intervention29 juillet 200411 7 févr. 2003 à 14:59
salut,
tout simplement :
une methode statique ne peut appeler que des methodes statiques !!
donc, soit tu met tes methodes en statique, soit tu met tes appels de méthodes dans une classe et tu instancie un objet de cette classe dans ton main.
par exemple :
import .....
public class main
{
public static void main(String args[])
{
GetPaquet getter = new GetPaquet();
}
}
class GetPaquet
{
int taille = 100;
byte[] tableau;
public GetPaquet()
{
try
{
DatagramSocket un_socket = new DatagramSocket(8080);
un_socket.connect(InetAddress.getByName("adresse"), 8080);
JFrame ok = new JFrame("Voici l'adresse ou est connecte ma socket: "+un_socket.getInetAddress() + " puis verifie si elle est bien connectee: " + un_socket.isConnected() + " puis l'adresse SocketAddress du paquet: " );
ok.setVisible(true);
appel();
un_socket.disconnect();
un_socket.close();
}
catch (Exception e)
{
JFrame erreur = new JFrame("Erreur procedure Socket!");
erreur.setVisible(true);
}
}
public void appel()//capture un nouveau paquet, puis donne la SocketAddress de ce paquet
{
DatagramPacket mon_paquet = new DatagramPacket(tableau, taille);
JFrame non = new JFrame("Adresse du paquet: " + mon_paquet.getSocketAddress());
non.setVisible(true);
}
}