Hi friends,
This example works as Client->Server and Server->Client mechanism. Means this example describes two way communication between Client and Server. This is a simple chat application.
First compile and run UdpServer class and then UdpClient class.
Hope this will help you. Suggestions are most welcome. Keep visiting my blog :)
We are going to discuss about UDP Socket Programming. In previous post we discussed about the differences between TCP & UDP and the sample example of TCP Socket Programming.
Below is the sample example of chat application using UDP Socket Programming.
UDP Sample:- We are going to create an small example which contains two classes.
- UdpServer.java:- This is a server class. Means this class will serve the purpose of socket connection. DatagramSocket is the java class and serve the purpose of Server and Client both. The overloaded constructor of DatagramSocket class matters. DatagramPacket is the java class which is responsible to transmit the data/packet over the network from server to client and vice-versa.
- UdpClient.java:- This is client class. This serves the purpose of client which will communicate to server and send data to server and receive the data sent by server.
UdpServer.java
import java.net.DatagramPacket; import java.net.DatagramSocket; import java.util.Scanner; public class UdpServer { public static void main(String[] args) { byte[] receiveBytes = new byte[256]; final int SERVER_PORT = 8080; System.out.println("Server started. Waiting for client message..."); try (DatagramSocket ds = new DatagramSocket(SERVER_PORT); Scanner sc = new Scanner(System.in);) { while (!ds.isClosed()) { // Construct Datagram packet to receive message DatagramPacket dp = new DatagramPacket(receiveBytes, receiveBytes.length); ds.receive(dp); String dataString = new String(dp.getData(), "UTF-8"); System.out.println("Client Says:" + dataString); String input = sc.nextLine(); // Construct Datagram packet to send message DatagramPacket sendPacket = new DatagramPacket(input.getBytes(), input.getBytes().length, dp.getAddress(), dp.getPort()); ds.send(sendPacket); } ds.close(); } catch (Exception e) { e.printStackTrace(); } } }
UdpClient.java
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; import java.util.Scanner; public class UdpClient { public static void main(String[] args) { byte[] receiveBytes = new byte[256]; final String TERMINATE = "bye"; final int SERVER_PORT = 8080; System.out.println("Client started. Type a message and hit Enter key to send the message to server."); try (Scanner sc = new Scanner(System.in); DatagramSocket ds = new DatagramSocket();) { // Get server address final InetAddress SERVER_ADDRESS = InetAddress.getLocalHost(); DatagramPacket dataPacket = null; while (!ds.isClosed()) { String input = sc.nextLine(); // Terminate the client if user says "bye" if (input.trim().equalsIgnoreCase(TERMINATE)) { break; } // Construct Datagram packet to send message dataPacket = new DatagramPacket(input.getBytes(), input.getBytes().length, SERVER_ADDRESS, SERVER_PORT); ds.send(dataPacket); // Construct Datagram packet to receive message dataPacket = new DatagramPacket(receiveBytes, receiveBytes.length); ds.receive(dataPacket); System.out.println("Server Says:" + new String(receiveBytes, "UTF-8")); } } catch (SocketException | UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
This example works as Client->Server and Server->Client mechanism. Means this example describes two way communication between Client and Server. This is a simple chat application.
First compile and run UdpServer class and then UdpClient class.
Hope this will help you. Suggestions are most welcome. Keep visiting my blog :)
This comment has been removed by a blog administrator.
ReplyDelete