139 lines
3.8 KiB
Markdown
139 lines
3.8 KiB
Markdown
## Task 2
|
|
|
|
### Structure
|
|
***
|
|
1. **lib:** .jar files downloaded from [apache](https://archive.apache.org/dist/ws/xmlrpc/binaries/). the downloaded file is extracted and the contents of the `lib` directory copied in here.
|
|
2. **out:** output binaries in packages `server` and `client`
|
|
3. **src:** source code in 2 packages `client` and `server`
|
|
|
|
### How to run
|
|
***
|
|
1. First we compile the code (in linux using the following command)
|
|
```bash
|
|
# the "lib/*" tells jvm to include these libraries
|
|
javac -cp "lib/*" -d out $(find src -name "*.java")
|
|
```
|
|
|
|
2. Then we start the server. again run the following command
|
|
```bash
|
|
java -cp "out:lib/*" server.Server
|
|
```
|
|
|
|
3. And finaly we run the client as such
|
|
```bash
|
|
java -cp "out:lib/*" client.Client
|
|
```
|
|
|
|
|
|
### inspecting packets using wireshark.
|
|
***
|
|
#### Normal functions
|
|
***
|
|
|
|
I installed wireshark-cli and run
|
|
```bash
|
|
sudo tshark -i lo -f "tcp port 8080" -z follow,tcp,ascii,0
|
|
```
|
|
In Client program the interaction looked like this
|
|
```
|
|
Enter an integer: 4
|
|
Enter an integer: 6
|
|
The sum is: 10
|
|
```
|
|
And the output of wireshark was as follows
|
|
|
|
```xml
|
|
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.add` instead of the correct `sample.sum` and run the program. obviously it threw an exception. the http response from wireguard was as follows
|
|
```xml
|
|
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: 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.
|
|
|