No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

UDPOutput.java 2.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package app.insa.clav.reseau;
  2. import app.insa.clav.Messages.Message;
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.IOException;
  5. import java.io.ObjectOutputStream;
  6. import java.net.*;
  7. /**
  8. * Classe qui permet d'envoyer des messages en UDP
  9. */
  10. public class UDPOutput{
  11. /**
  12. * Socket UDP par lequel on envoie les messages
  13. * En théorie peut être le même que celui d en Input ou sur différent port.
  14. */
  15. private DatagramSocket socket;
  16. /**
  17. * Constructeur
  18. * @param localAddress
  19. * IP locale
  20. * @param outputPort
  21. * Port du socket output
  22. */
  23. public UDPOutput(InetAddress localAddress, int outputPort){
  24. try {
  25. this.socket = new DatagramSocket(outputPort, localAddress);
  26. this.socket.setBroadcast(true);
  27. }
  28. catch (SocketException e){
  29. System.out.println("Exception creation SocketDatagrammeConfiguration");
  30. e.printStackTrace();
  31. }
  32. }
  33. /**
  34. * Envoie le message en paramètre (le message contient toutes les informations de routage
  35. * @param msg
  36. * Message à envoyer
  37. */
  38. public void sendMsg(Message msg){
  39. try {
  40. //Envoi du pseudo sur le reseau local à l'adresse IP dest sur le port dest
  41. byte[] buffer = "".getBytes();
  42. ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream();
  43. try {
  44. ObjectOutputStream objectOutStream = new ObjectOutputStream(byteOutStream);
  45. objectOutStream.writeObject(msg);
  46. objectOutStream.close();
  47. buffer = byteOutStream.toByteArray();
  48. } catch (IOException e1) {
  49. System.out.println("Exception serialisation de l'objet envoi message");
  50. }
  51. //InetAddress broadcastAdress = InetAddress.getByAddress("255.255.255.255".getBytes());
  52. DatagramPacket packet = new DatagramPacket(buffer,buffer.length,msg.destIP,msg.destPort);
  53. this.socket.send(packet);
  54. }
  55. catch (UnknownHostException e){
  56. System.out.println("Unknown host dans broadcast address");
  57. e.printStackTrace();
  58. }
  59. catch (IOException e){
  60. System.out.println("IOException send pseudo");
  61. e.printStackTrace();
  62. }
  63. }
  64. }