Files
DistributedSystems/week3_TinsaeGhilay/Task 2
2025-12-22 00:26:19 +01:00
..
2025-12-21 20:45:20 +01:00
2025-12-22 00:26:19 +01:00
2025-12-22 00:26:19 +01:00
2025-12-22 00:26:19 +01:00

Task 2

Structure


  1. lib: .jar files downloaded from apache. 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)

    # 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

    java -cp "out:lib/*" server.Server
    
  3. And finaly we run the client as such

    java -cp "out:lib/*" client.Client
    

    inspecting packets using wireshark.


    Normal functions


    I installed wireshark-cli and run

    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

        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

    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.