Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package chapter2;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- /** *
- * Server that echoes back client's messages.
- * At end of dialogue, sends message indicating number of
- * messages received. Uses datagrams.
- *
- * @author jeffrey
- */
- public class UDPEchoServer
- {
- private static final int PORT = 1234;
- private static DatagramSocket datagramSocket;
- private static DatagramPacket inPacket, outPacket;
- private static byte[] buffer;
- public static void main( String[] args )
- {
- System.out.println( "Opening port... \n" );
- try
- {
- datagramSocket = new DatagramSocket( PORT ); // STEP 1
- }
- catch ( Exception e )
- {
- System.out.println( e.getMessage() );
- System.exit( 1 );
- }
- handleClient();
- }
- private static void handleClient()
- {
- try
- {
- String messageIn, messageOut;
- int numMessages = 0;
- do
- {
- buffer = new byte[256]; // STEP 2
- inPacket = new DatagramPacket( buffer, buffer.length ); // STEP 3
- datagramSocket.receive( inPacket ); // STEP 4
- InetAddress clientAddress = inPacket.getAddress(); // STEP 5
- int clientPort = inPacket.getPort(); // STEP 5
- messageIn = new String( inPacket.getData(), 0, inPacket.getLength() ); // STEP 6
- System.out.println( "Message received: " + messageIn );
- numMessages++;
- messageOut = "Message " + numMessages + ": " + messageIn;
- // STEP 7
- outPacket = new DatagramPacket( messageOut.getBytes(), messageOut.length(), clientAddress, clientPort );
- // STEP 8
- datagramSocket.send( outPacket );
- }
- while ( true );
- }
- catch ( Exception e )
- {
- e.printStackTrace();
- }
- finally
- {
- System.out.println( "\n* Closing connection... *" );
- datagramSocket.close();
- }
- }
- }
Add Comment
Please, Sign In to add comment