Task 2
Structure
- lib: .jar files downloaded from apache. the downloaded file is extracted and the contents of the
libdirectory copied in here. - out: output binaries in packages
serverandclient - src: source code in 2 packages
clientandserver
How to run
-
First we compile the code (in linux using the following command)
# the "lib/*" tells jvm to include these libraries javac -cp "lib/*" -d out $(find src -name "*.java") -
Then we start the server. again run the following command
java -cp "out:lib/*" server.Server -
And finaly we run the client as such
java -cp "out:lib/*" client.Clientinspecting packets using wireshark.
Normal functions
I installed wireshark-cli and run
sudo tshark -i lo -f "tcp port 8080" -z follow,tcp,ascii,0In Client program the interaction looked like this
Enter an integer: 4 Enter an integer: 6 The sum is: 10And the output of wireshark was as follows
POST /RPC2 HTTP/1.1 Content-Type: text/xml User-Agent: Apache XML RPC 3.0 (Sun HTTP Transport) Cache-Control: no-cache Pragma: no-cache Host: localhost:8080 Accept: */* Connection: keep-alive Content-Length: 195 <?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>sample.sum</methodName> <params> <param> <value><i4>4</i4></value> </param> <param> <value><i4>6</i4></value> </param> </params> </methodCall> HTTP/1.1 200 OK Server: Apache XML-RPC 1.0 Connection: close Content-Type: text/xml Content-Length: 129 <?xml version="1.0" encoding="UTF-8"?> <methodResponse> <params> <param> <value><i4>10</i4></value> </param> </params> </methodResponse>I believe this is the expected result.
Intentional error
I changed the messge call string to
sample.addinstead of the correctsample.sumand run the program. obviously it threw an exception. the http response from wireguard was as followsPOST /RPC2 HTTP/1.1 Content-Type: text/xml User-Agent: Apache XML RPC 3.0 (Sun HTTP Transport) Cache-Control: no-cache Pragma: no-cache Host: localhost:8080 Accept: */* Connection: keep-alive Content-Length: 196 <?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>sample.add</methodName> <params> <param> <value><i4>23</i4></value> </param> <param> <value><i4>4</i4></value> </param> </params> </methodCall> HTTP/1.1 200 OK Server: Apache XML-RPC 1.0 Connection: close Content-Type: text/xml Content-Length: 265 <?xml version="1.0" encoding="UTF-8"?> <methodResponse> <fault> <value> <struct> <member> <name>faultCode</name> <value><i4>0</i4></value> </member> <member> <name>faultString</name> <value>No such handler: sample.add</value> </member> </struct> </value> </fault> </methodResponse>Again the expected results. I only tested it in one machine. so time will be done may be another time.