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
*/
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.