Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Practice socket programming with threads: Write an \'echo\' server using UDP . (

ID: 3863848 • Letter: P

Question

Practice socket programming with threads: Write an 'echo' server using UDP. (This server does not need to be multi-threaded, but make sure that you do know how to implement a multi-threaded server when asked.) Each request is handled by replying to the client with the unmodified string the client sent.

Also, write an 'echo' client to test your server. Each client will send 20 sequentially numbered messages to the server & receive the replies. This code needs to be in java.

Need two features:

1. request is handled by replying to the client with the unmodified string the client sent.

2. 20 sequentially numbered messages to the server & receive the replies

Explanation / Answer

/*

UDP:

RUN THE SERVER JAVA CODE IN ONE COMMANDLINE AND CLINET ON THE OTHER.
RUN THE SERVER FILE FIRST AND THEN CLINET TO GET THE DESIRED RESULTS

*/

//ServerEcho.java

import java.net.*;
import java.util.*;

public class ServerEcho
{
public static void main( String args[]) throws Exception
{
DatagramSocket datagramSocket = new DatagramSocket(7);
byte arrayONE[] = new byte[150];
DatagramPacket datagramPacket = new DatagramPacket(arrayONE, arrayONE.length );
  
while(true)
{
datagramSocket.receive(datagramPacket);
  
byte arrayTWO[] = datagramPacket.getData();
int packSize = datagramPacket.getLength();
String str = new String(arrayTWO, 0, packSize);

System.out.println( new Date( ) + " " + datagramPacket.getAddress( ) + " : " + datagramPacket.getPort( ) + " "+ str);
datagramSocket.send(datagramPacket);
}
}   
}

/*
output:

Date@28d93b30 /127.0.0.1 : 40707 This is client calling for number :1
Date@1b6d3586 /127.0.0.1 : 40707 This is client calling for number :2
Date@4554617c /127.0.0.1 : 40707 This is client calling for number :3
Date@74a14482 /127.0.0.1 : 40707 This is client calling for number :4
Date@1540e19d /127.0.0.1 : 40707 This is client calling for number :5
Date@677327b6 /127.0.0.1 : 40707 This is client calling for number :6
Date@14ae5a5 /127.0.0.1 : 40707 This is client calling for number :7
Date@7f31245a /127.0.0.1 : 40707 This is client calling for number :8
Date@6d6f6e28 /127.0.0.1 : 40707 This is client calling for number :9
Date@135fbaa4 /127.0.0.1 : 40707 This is client calling for number :10
Date@45ee12a7 /127.0.0.1 : 40707 This is client calling for number :11
Date@330bedb4 /127.0.0.1 : 40707 This is client calling for number :12
Date@2503dbd3 /127.0.0.1 : 40707 This is client calling for number :13
Date@4b67cf4d /127.0.0.1 : 40707 This is client calling for number :14
Date@7ea987ac /127.0.0.1 : 40707 This is client calling for number :15
Date@12a3a380 /127.0.0.1 : 40707 This is client calling for number :16
Date@29453f44 /127.0.0.1 : 40707 This is client calling for number :17
Date@5cad8086 /127.0.0.1 : 40707 This is client calling for number :18
Date@6e0be858 /127.0.0.1 : 40707 This is client calling for number :19
Date@61bbe9ba /127.0.0.1 : 40707 This is client calling for number :20


*/

// ClientEcho.java

import java.net.*;
import java.util.*;
import java.util.Date;
public class ClientEcho
{
public static void main( String args[] ) throws Exception
{
InetAddress inetAddress = InetAddress.getByName("localhost");   

DatagramSocket datagramSocket = new DatagramSocket( );
for(int i=1;i<21;i++)
{
  
String msgONE = "This is client calling for number :"+i;
byte arrayONE[] = msgONE.getBytes( );
DatagramPacket datagramPacket = new DatagramPacket(arrayONE, arrayONE.length, inetAddress, 7);
datagramSocket.send(datagramPacket); // send the packet
Date sendTime = new Date(); // note the time of sending the message
  
datagramSocket.receive(datagramPacket); // receive the packet
String messageTWO = new String(datagramPacket.getData( ));
Date clientReceiveTime = new Date( ); // note the time of receiving the message
System.out.println((clientReceiveTime.getTime( ) - sendTime.getTime( )) + " milliseconds echo time for " + messageTWO);
}

}
}


/*
output:

8 milliseconds echo time for This is client calling for number :1
1 milliseconds echo time for This is client calling for number :2
0 milliseconds echo time for This is client calling for number :3
1 milliseconds echo time for This is client calling for number :4
0 milliseconds echo time for This is client calling for number :5
0 milliseconds echo time for This is client calling for number :6
1 milliseconds echo time for This is client calling for number :7
0 milliseconds echo time for This is client calling for number :8
1 milliseconds echo time for This is client calling for number :9
0 milliseconds echo time for This is client calling for number :10
1 milliseconds echo time for This is client calling for number :11
0 milliseconds echo time for This is client calling for number :12
0 milliseconds echo time for This is client calling for number :13
1 milliseconds echo time for This is client calling for number :14
0 milliseconds echo time for This is client calling for number :15
0 milliseconds echo time for This is client calling for number :16
1 milliseconds echo time for This is client calling for number :17
1 milliseconds echo time for This is client calling for number :18
0 milliseconds echo time for This is client calling for number :19
0 milliseconds echo time for This is client calling for number :20

*/

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote