[java]Erreur que j explique pas!![/java]

Erreur que j explique pas!![/java] [java] - Java - Programmation

Marsh Posté le 16-10-2002 à 12:09:40    

Voila deux classes. une server l autre client.
le server compile sans erreurs mais ne "marche" pas.
Qd au client y des erreurs mais je ne vois comment les corriger.

Code :
  1. /*This Program implments Java sockets (TCP) for network connection and Transmissions */
  2. /* of data. It is a simple datag                    ram client. */
  3. /* Niko Migas 13 Oct 2002 */
  4. /* Libraries Needed */
  5. import java.io.*; /* Standard Library for Input/Output tasks */
  6. import java.net.*; /* Networking tasks library */
  7. /* Class declaration. Attention Java is Case Sensitive */
  8. public class Client
  9. {
  10. /* Program Core */
  11. public static void main (String[]args) throws IOException
  12. {
  13.   /* Variable Declaration. stdIn is to be modified by User */
  14.      BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
  15.      /* Variable Declaration. dgsocket will be the "socket used in this program" */
  16.      DatagramSocket dgsocket;
  17.      /* Varaible Declaration. "address" will contain the value of the server's address */
  18.      InetAddress address;
  19.      /* Variable Declaration. HostName contains the server's name on the network i.e C08-18 */
  20.      String HostName;
  21.      /* User input */
  22.      System.out.print("Please enter Host name: " );
  23.      HostName = sdtIn.readLine();
  24.      address = InetAddress.getByName(HostName);
  25.      dgsocket = new DatagramSocket();
  26.      /* Declaration of the DatagramPacket name */ /*???*/
  27.      DatagramPacket packet;
  28.      /* Vara5b3e Declaration. */
  29.      byte[]sendBuf = new byte[256];
  30.      /* "data send to the Server */
  31.      packet = new DatagramPacket(sendBuf,256);
  32.      /* Client enters in the wait state */
  33.      dgsocket.receive(packet);
  34.      /* Varialbe declaration. Variable to stock the server answer */
  35.      String rcvdMessage = new String(packet.getData(),0);
  36.      /* Feedback to the user */
  37.      System.out.println("Message recieved: "+ rcvdMessage);
  38. }
  39. }


Errors:
[quote]
> Executing: D:\Program Files\ConTEXT\ConExec.exe "D:\j2sdk1.4.0_02\bin\javac.exe" "Client.java" -deprecation
 
Client.java:29: cannot resolve symbol
symbol  : variable sdtIn  
location: class Client
     HostName = sdtIn.readLine();
                ^
Client.java:41: warning: String(byte[],int) in java.lang.String has been deprecated
     String rcvdMessage = new String(packet.getData(),0);
                          ^
1 error
1 warning
> Execution finished.
[\quote]
 

Code :
  1. /* Libraries Needed */
  2. import java.io.*; /* Standard Library for Input/Output tasks */
  3. import java.net.*; /* Networking tasks library */
  4. import java.util.*; /* */
  5. /* Class declaration. Attention Java is Case Sensitive */
  6. public class Server
  7. {
  8. public static void main(String[]args) throws IOException
  9. {
  10.  /* definition of the datagram socket's name */
  11.     DatagramSocket dgsocket;
  12.  /* Value modification */
  13.     dgsocket = new DatagramSocket(4445);
  14.  /* byte named buffer declarared as well as its size */
  15.     byte[]buffer = new byte[256];
  16.     /* declaration of the datagram packet's name and configuration */
  17.  DatagramPacket dgpacket = new DatagramPacket(buffer,buffer.length);
  18.  /* recieving state of the server */
  19.     dgsocket.receive(dgpacket);
  20.  /* declartion of the variable holding the the address and acquisition of it */ /*???*/
  21.     InetAddress address = dgpacket.getAddress();
  22.  /* Port number acquiered */
  23.     int port = dgpacket.getPort();
  24.  /* Constant string creation */
  25.     String dgString = "datagram server replays";
  26.  /* Buffer is modified */
  27.     buffer = dgString.getBytes();
  28.  /* modification og the packet */
  29.     dgpacket = new DatagramPacket(buffer,buffer.length,address,port);
  30.  /* The reply message is now contained in the packet */
  31.     dgsocket.send(dgpacket);
  32.     /* WHAT IS DG MEANING ????????????????? */
  33. }
  34. }


Message édité par KrzAramis le 16-10-2002 à 13:55:08

---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 16-10-2002 à 12:09:40   

Reply

Marsh Posté le 16-10-2002 à 12:11:13    

stdIn != sdtIn déjà  :sarcastic:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 16-10-2002 à 12:26:29    

Thank you ! le Client founctionne maintenant.
Le server aussi.
 
Mais sur une seule machine. Qd je copie les fichiers sur une autre machine ca marche plus !
 
@+++


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 16-10-2002 à 12:35:22    

bin c'est normal tu démarres ton client pour qu'il se connecte sur localhost. Ca fonctionnerra de suite moins bien si ton serveur est sur une autre machine  :sarcastic:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 16-10-2002 à 13:38:08    

ben justement c est le but du jeu!
 
une mqchine en Server l autre Client.
A moins que le prof se soit mal exprime! ( ces ecossais alors)
 
:)
 
@++


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 16-10-2002 à 13:49:07    

KrzAramis a écrit a écrit :

ben justement c est le but du jeu!
 
une mqchine en Server l autre Client.
A moins que le prof se soit mal exprime! ( ces ecossais alors)
 
:)
 
@++




localhost=machine locale
donc ton client essaie de se connecter au serveur présent sur la meme machine. Si ton serveur est sur une autre machine, il faut renseigner l'adresse de cette machine au client (en lieu et place de "localhost" )

Reply

Marsh Posté le 16-10-2002 à 13:50:46    

KrzAramis a écrit a écrit :

ben justement c est le but du jeu!
 
une mqchine en Server l autre Client.
A moins que le prof se soit mal exprime! ( ces ecossais alors)
 
:)
 
@++




 
 :heink:  :(  :cry:  :gun:


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 16-10-2002 à 13:54:18    

:??:  
 
Attends une seconde dans le code y a pas de localhost. Mais juste HostName.
Et puis pkoi y aurai ouverture de socket et transmision d adresse si c etait pour se connecter a une machine locale??
 
@++


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 16-10-2002 à 13:56:08    

:heink: t'as édité ou bien je suis  vraiment trop crevé  :??:  
 
bref tu entres quoi comme hostname lorsque ton serveur est sur une autre machine ?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 16-10-2002 à 13:59:42    

lorsque le client affiche "hostname" j entre le nom de la machine où le server est en marche !
 
Effet le code a ete donne par le prof.
 
@++


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 16-10-2002 à 13:59:42   

Reply

Marsh Posté le 16-10-2002 à 14:01:25    

KrzAramis a écrit a écrit :

 :??:  
 
Attends une seconde dans le code y a pas de localhost. Mais juste HostName.
Et puis pkoi y aurai ouverture de socket et transmision d adresse si c etait pour se connecter a une machine locale??
 
@++




ca aurait pu etre pour faire des tests ...

Reply

Marsh Posté le 16-10-2002 à 14:02:54    

KrzAramis a écrit a écrit :

lorsque le client affiche "hostname" j entre le nom de la machine où le server est en marche !




 
 
et c'est quoi le résultat au juste?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 16-10-2002 à 14:05:34    

KrzAramis a écrit a écrit :

 :??:  
Et puis pkoi y aurai ouverture de socket et transmision d adresse si c etait pour se connecter a une machine locale??
 
@++




 
parce que tu crois que le protocole est différent parce que la machine source et la machine destination sont en réalité la même machine?
 
Ca n'a aucun sens. T'ouvre une socket sur le machine destination et si il y a un process qui écoute sur ce port là il accepte ou refuse la connection point barre. Que ce soit la même machine ou pas n'y change rien (si ce n'est le délai).
 
Tu voudrais que ca passe par où si c'était en local?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 16-10-2002 à 14:12:21    

DarkLord a écrit a écrit :

 
et c'est quoi le résultat au juste?




 
eh bien quand le nom de l hote est correct et que le server tourne sur l hote. Le client affiche : Recieved Message :
 
Mais y a rien qui s affiche a cote de "recieved message".
Dans le meme temps la fenetre server se ferme.
 
J en conlcus que le server a recu la requet et a repondu. Par contre je ne comprends pas pkoi y a rein du cote client (meme si j ajoute System.out.flush() )
 
Voila .


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 16-10-2002 à 14:39:26    

et en local ca marche?


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 16-10-2002 à 14:43:49    

Citation :


> Executing: D:\Program Files\ConTEXT\ConExec.exe "D:\j2sdk1.4.0_02\bin\java.exe" Server
 
java.net.BindException: Address already in use: Cannot bind
        at java.net.PlainDatagramSocketImpl.bind(Native Method)
        at java.net.DatagramSocket.bind(DatagramSocket.java:329)
        at java.net.DatagramSocket.<init>(DatagramSocket.java:178)
        at java.net.DatagramSocket.<init>(DatagramSocket.java:229)
        at java.net.DatagramSocket.<init>(DatagramSocket.java:202)
        at Server.main(Server.java:19)
Exception in thread "main"  
> Execution finished.


 
J ai oublie de faire qqc ?
 
ci dessus le message que je peux voir dans ma consol dos.
 
@++


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 16-10-2002 à 14:54:57    

le port qu'utilise ton serveur est déjà utilisé

Reply

Marsh Posté le 16-10-2002 à 15:11:41    

comment je fais pour liberer cette address?
 
Ou alors y a qqc que je peux a la place?
 
@++


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 16-10-2002 à 15:16:45    

tu prennais quel port par curiosité?
 
prend 4012
 


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 16-10-2002 à 15:21:08    

pour le port j en ai pas la moindre idee.
cependant le chgt d adresse ne marche qu une seule fois.
est ce que je dois changer l adresse a chaque compilation?
 


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 16-10-2002 à 15:23:08    

tiens, rapport au dernier commentaire du source, dg c'est pour datagramme.

Reply

Marsh Posté le 16-10-2002 à 15:28:04    

KrzAramis a écrit a écrit :

pour le port j en ai pas la moindre idee.
cependant le chgt d adresse ne marche qu une seule fois.
est ce que je dois changer l adresse a chaque compilation?
 
 




 
 :heink: t'es à la masse toi je crois ...
 
Est ce que tu ne serais pas en train de démarrer un serveur à chaque fois sans arreter le précédent (ce qui expliquerait pourquoi le port est occupé)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 16-10-2002 à 15:41:31    

him disons que je fais trop de chose a la fois.
et que je pensais que le server s arreter lors de la fermeture de la fenetre.
je viens de faire ctrl alt suppr et peux voir qu il y a deux ou trois fois le meme process.
Si le prof m aide pas je peux pas deviner tout seul.
 
!!!
 
merci je m en vais tuer les vilains doublons (comme dans Perry Rodhan)
 
@++


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed