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();
}
}
Tagged: Code Samples, communications, java, networking, server, tcp/ip

5 Trackbacks
You can leave a trackback using this URL: http://systembash.com/content/a-simple-java-udp-server-and-udp-client/trackback/
New blog post: A Simple Java UDP Server and UDP Client http://tinyurl.com/69ukrl
[...] up on my previous post, we also had to demonstrate a sample Java TCP Server and TCP Client. They are pretty small and give [...]
Just found the site where Freddy got his Client/Server http://is.gd/6VLfk #DurhamCS
New Post: A Simple Java UDP Server and UDP Client http://bit.ly/4AwQjS
http://tinyurl.com/69ukrl
A Simple Java UDP Server and UDP Client – systemBash
12 Comments
from the Computer Networking: A top Down Approach by Kurose
how to execute
how to execute
> javac UDPClient.java UDPServer.java
Open two command prompt windows and write in one:
> java UDPServer
and after this, write on another:
> java UDPClient
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());
its nt working on two different computer…what should i do
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”);
How do you set the UDP port on which the server is listening?
Ok I found it. It’s 9876. Thanks
Good prgram for passing string,number etc between client &server
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….
hi i want file transfer program using udp protocol in java