Skip to content

UDP Ping lab

stateDiagram
    [*] --> Start
    Start --> CreateSocket: Create UDP Socket
    CreateSocket --> BindSocket: Bind Socket to IP and Port
    BindSocket --> Listening: Start Listening for Incoming Packets

    Listening --> ReceivePacket: Receive Packet from Client
    ReceivePacket --> GenerateRandom: Generate Random Number (0-10)
    GenerateRandom --> CheckRandom: Check if Random Number < 4

    CheckRandom --> PacketLost: Packet Considered Lost
    PacketLost --> Listening: Continue Listening

    CheckRandom --> ProcessPacket: Random Number >= 4
    ProcessPacket --> CapitalizeMessage: Capitalize Client Message
    CapitalizeMessage --> SendResponse: Send Response to Client
    SendResponse --> Listening: Continue Listening

Client Code

stateDiagram
    [*] --> Start
    Start --> CreateSocket: Create UDP Socket
    CreateSocket --> SetTimeout: Set Socket Timeout to 1 Second
    SetTimeout --> SendPing: Send Ping Message to Server
    SendPing --> WaitForResponse: Wait for Server Response

    WaitForResponse --> ReceiveResponse: Response Received
    ReceiveResponse --> CalculateRTT: Calculate Round Trip Time (RTT)
    CalculateRTT --> PrintResponse: Print Response Message and RTT
    PrintResponse --> CheckPingCount: Check if 10 Pings Sent

    WaitForResponse --> Timeout: No Response within 1 Second
    Timeout --> PrintTimeout: Print "Request Timed Out"
    PrintTimeout --> CheckPingCount: Check if 10 Pings Sent

    CheckPingCount --> SendPing: Less than 10 Pings Sent
    CheckPingCount --> CloseSocket: 10 Pings Sent
    CloseSocket --> [*]
Requirements

classDiagram
    class PingMessage {
        +int sequence_number
        +Date time
        +String formatMessage()
    }

    class Client {
        +int currentSequence
        +Date sendTime
        +PingMessage createPingMessage()
        +void sendPing()
    }

    class Server {
        +void receivePing(PingMessage message)
        +void processPing(PingMessage message)
        +void sendResponse(PingMessage message)
    }

    PingMessage "1" --> "1" Client : created by
    Client "1" --> "1" Server : sends ping to
    Server "1" --> "1" PingMessage : processes