import java.net.*; import java.io.*; import java.nio.*; import java.nio.channels.*; import java.nio.charset.*; /** * Classe client envoyant le RATE desire au server donne en argument * @author Vincent Richet * */ public class UDPClientWithChannels { /** * charset permet de definir le type d'encodage pour passer de String a int */ static final Charset charset = Charset.forName("ISO-8859-1"); static String args[] = new String[3]; //initialisation static int port = 0; // valeur d'initialisation sans importance /** * Permet d'etablir la connexion avec le server (channel puis socket liee au server), * d'encoder la valeur RATE dans un ByteBuffer, puis d'envoyer ce buffer. * et d'envoyer ce buffer par la socket liee * @param args_arg tableau contenant l'adresse du serveur, son port d'ecoute et le RATE a envoyer * @throws IOException */ static void get_connexion(String[] args_arg) throws IOException{ DatagramChannel channel = DatagramChannel.open( ); //creation d'une channel try { port = Integer.parseInt(args_arg[1]); } catch (NumberFormatException ex) { System.err.println("Le numero de port doit etre un entier"); System.exit(1); //abnormal exit } SocketAddress remote = new InetSocketAddress(args_arg[0],port); //socket associee au server String RATE = args_arg[2]; //valeur a envoyer encodee en String ByteBuffer byteB = charset.encode(RATE); //String encodee dans un ByteBuffer pour l'envoi channel.connect(remote); //connection de la channel au socket channel.write(byteB); //envoi du buffer au server } public static void main(String[] args) throws IOException { try { if (args.length!=3) throw new Exception();} catch (Exception ex) { System.err.println("Utilisation : host port RATE"); System.exit(1); // abnormal exit} } get_connexion(args); //connection a la socket distante et envoie de la valeur par le buffer } // end main } // end Class