Guest User

Untitled

a guest
Jul 15th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. /*
  2. * To change this template, choose Tools | Templates
  3. * and open the template in the editor.
  4. */
  5. package chapter2;
  6.  
  7. import java.net.DatagramPacket;
  8. import java.net.DatagramSocket;
  9. import java.net.InetAddress;
  10.  
  11. /** *
  12. * Server that echoes back client's messages.
  13. * At end of dialogue, sends message indicating number of
  14. * messages received. Uses datagrams.
  15. *
  16. * @author jeffrey
  17. */
  18. public class UDPEchoServer
  19. {
  20.  
  21. private static final int PORT = 1234;
  22. private static DatagramSocket datagramSocket;
  23. private static DatagramPacket inPacket, outPacket;
  24. private static byte[] buffer;
  25.  
  26. public static void main( String[] args )
  27. {
  28. System.out.println( "Opening port... \n" );
  29.  
  30. try
  31. {
  32. datagramSocket = new DatagramSocket( PORT ); // STEP 1
  33. }
  34. catch ( Exception e )
  35. {
  36. System.out.println( e.getMessage() );
  37. System.exit( 1 );
  38. }
  39.  
  40. handleClient();
  41. }
  42.  
  43. private static void handleClient()
  44. {
  45. try
  46. {
  47. String messageIn, messageOut;
  48. int numMessages = 0;
  49.  
  50. do
  51. {
  52. buffer = new byte[256]; // STEP 2
  53. inPacket = new DatagramPacket( buffer, buffer.length ); // STEP 3
  54. datagramSocket.receive( inPacket ); // STEP 4
  55.  
  56. InetAddress clientAddress = inPacket.getAddress(); // STEP 5
  57. int clientPort = inPacket.getPort(); // STEP 5
  58.  
  59. messageIn = new String( inPacket.getData(), 0, inPacket.getLength() ); // STEP 6
  60. System.out.println( "Message received: " + messageIn );
  61.  
  62. numMessages++;
  63. messageOut = "Message " + numMessages + ": " + messageIn;
  64.  
  65. // STEP 7
  66. outPacket = new DatagramPacket( messageOut.getBytes(), messageOut.length(), clientAddress, clientPort );
  67.  
  68. // STEP 8
  69. datagramSocket.send( outPacket );
  70. }
  71. while ( true );
  72. }
  73. catch ( Exception e )
  74. {
  75. e.printStackTrace();
  76. }
  77. finally
  78. {
  79. System.out.println( "\n* Closing connection... *" );
  80. datagramSocket.close();
  81. }
  82. }
  83. }
Add Comment
Please, Sign In to add comment