For a class I am taking, we are testing out a simple UDP Server and UDP Client to demonstrate what each one does and how sockets work. The code size is very small and give you a good idea about how a UDP Server opens up a port, and then the UDP Client sends or receives data from that port.

To compile these, install Java JDK to your system. Then compile the program with javac UDPClient.java – this will create a UDPClient.class. Execute the file with java UDPClass – leave off the .class, or you will get the error: “Exception in thread “main” java.lang.NoClassDefFoundError”.

Here is sample code for a simple Java UCP Server and Client, originally from”Computer Networking: A Top Down Approach, by Kurose and Ross:

UDPServer.java:

import java.io.*;
import java.net.*;

class UDPServer
{
   public static void main(String args[]) throws Exception
      {
         DatagramSocket serverSocket = new DatagramSocket(9876);
            byte[] receiveData = new byte[1024];
            byte[] sendData = new byte[1024];
            while(true)
               {
                  DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
                  serverSocket.receive(receivePacket);
                  String sentence = new String( receivePacket.getData());
                  System.out.println("RECEIVED: " + sentence);
                  InetAddress IPAddress = receivePacket.getAddress();
                  int port = receivePacket.getPort();
                  String capitalizedSentence = sentence.toUpperCase();
                  sendData = capitalizedSentence.getBytes();
                  DatagramPacket sendPacket =
                  new DatagramPacket(sendData, sendData.length, IPAddress, port);
                  serverSocket.send(sendPacket);
               }
      }
}

UDPClient.java:

import java.io.*;
import java.net.*;

class UDPClient
{
   public static void main(String args[]) throws Exception
   {
      BufferedReader inFromUser =
         new BufferedReader(new InputStreamReader(System.in));
      DatagramSocket clientSocket = new DatagramSocket();
      InetAddress IPAddress = InetAddress.getByName("localhost");
      byte[] sendData = new byte[1024];
      byte[] receiveData = new byte[1024];
      String sentence = inFromUser.readLine();
      sendData = sentence.getBytes();
      DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
      clientSocket.send(sendPacket);
      DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
      clientSocket.receive(receivePacket);
      String modifiedSentence = new String(receivePacket.getData());
      System.out.println("FROM SERVER:" + modifiedSentence);
      clientSocket.close();
   }
}

Last updated June 25th, 2020.

44 comments
  1. Pingback: Dave Drager
  2. > javac UDPClient.java UDPServer.java
    Open two command prompt windows and write in one:
    > java UDPServer
    and after this, write on another:
    > java UDPClient

  3. > javac UDPClient.java UDPServer.java
    Open two command prompt windows and write in one:
    > java UDPServer
    and after this, write on another:
    > java UDPClient

  4. In the server, you would like to take into account the size of the received package:

    String sentence = new String(receivePacket.getData(), 0, receivePacket.getLength());

  5. In the server, you would like to take into account the size of the received package:

    String sentence = new String(receivePacket.getData(), 0, receivePacket.getLength());

  6. Client is sending the packets to localhost, use the IP Adress or name of the m/c you are running server on.

    InetAddress IPAddress = InetAddress.getByName(“localhost”);

  7. Client is sending the packets to localhost, use the IP Adress or name of the m/c you are running server on.

    InetAddress IPAddress = InetAddress.getByName(“localhost”);

  8. Pingback: Matt Hollander
  9. Pingback: Dave Drager
  10. THANK U SO MUCH…its so much simple and easy to understand…bcoz of this i completed my project successfully…Secure TFTP with Multithreaded Server my project title…i used some code of this in my project…Again THANK U….

  11. THANK U SO MUCH…its so much simple and easy to understand…bcoz of this i completed my project successfully…Secure TFTP with Multithreaded Server my project title…i used some code of this in my project…Again THANK U….

  12. Pingback: train_boy
  13. Hello, I am having a problem with the codes, I have try to run them, but when i enter a sentence, there is no output it just holds on. Can you tell me why?

  14. I think this depends on who you talk to. At scale there might be some differences in how things are handled by the system, but for this small scale project there will be no noticable difference.

  15. This code works really well, on WinXP, and even works on an Insignia Infocast (Chumby). Thanks!

  16. go into the directory where u save the file,
    launch “javac UDPServer.java” and “javac UDPCliend.java” to compile the source file, when u see .class file then in cmd run “java UDPServer” and into another shell “Java UDPClient”. that’s all.

  17. Thanks alot, It gives us the very simper view to learn other than typical.Ty

  18. Yes, just create a UI with an EditText, TextView, and a Button. Then modified the UDPClient code to receive the user input from the EditText. Also change the IP address of the Server. Next, change the output of the message that you received from the Server to print it in the TextView.
    Thanks for the code… 

  19. Hello, I am having a problem with the codes, I have try to run them, but when i enter a sentence, there is no output it just holds on. Can you tell me why?

  20. Hi This code does not work when the 2 computers are on different network. Do we have to use the Trustmanager, or are there any changes needs to be done on the fire wall?

  21. Desktopupd>javac UDPServer.java
    Desktopupd>java UDPServer.java (java UDPServer or java UDPServer.class or  java UDPClass – )
    Error
    Can anyone tell me?
    Exception in thread “main” java.lang.NoClassDefFoundError: UDPServer/javaCaused by: java.lang.ClassNotFoundException: UDPServer.java        at java.net.URLClassLoader$1.run(Unknown Source)        at java.security.AccessController.doPrivileged(Native Method)        at java.net.URLClassLoader.findClass(Unknown Source)        at java.lang.ClassLoader.loadClass(Unknown Source)        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)        at java.lang.ClassLoader.loadClass(Unknown Source)Could not find the main class: UDPServer.java.  Program will exit.

  22. when you want to run a java before compile, remove .java in the end.
    So after “javac UDPServer.java” run “java UDPServer” and it will run properly.

    bye

Comments are closed.

You May Also Like

Skype Me

I’m trying to get more people to contact me via Skype rather…

Last Modified Date or Time on WordPress Template Page

I couldn’t readily find an answer to this question via the google.…