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
from the Computer Networking: A top Down Approach by Kurose
from the Computer Networking: A top Down Approach by Kurose
how to execute
how to execute
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
> 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());
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
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”);
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?
How do you set the UDP port on which the server is listening?
Ok I found it. It’s 9876. Thanks
Ok I found it. It’s 9876. Thanks
Good prgram for passing string,number etc between client &server
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….
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
hi i want file transfer program using udp protocol in java
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?
is there a difference between the performance of sockets written in C vs. Java?
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.
This code works really well, on WinXP, and even works on an Insignia Infocast (Chumby). Thanks!
how to run in cmd??
can anyone tell please exactly whta to do?
can u tell please exactly what to do in cmd?
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.
Thanks alot, It gives us the very simper view to learn other than typical.Ty
Is it work for Android Mobile
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…
how to execute
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?
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?
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.
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.