https://github.com/petru-braha/rr-application
A client-server application developed on Linux, which provides digital communication for the transport industry
https://github.com/petru-braha/rr-application
command-design-pattern concurency multiplexing protocols socket-communication thread-synchronization
Last synced: 3 months ago
JSON representation
A client-server application developed on Linux, which provides digital communication for the transport industry
- Host: GitHub
- URL: https://github.com/petru-braha/rr-application
- Owner: petru-braha
- Created: 2024-11-25T07:42:15.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2025-02-01T19:20:52.000Z (4 months ago)
- Last Synced: 2025-02-01T20:25:34.715Z (4 months ago)
- Topics: command-design-pattern, concurency, multiplexing, protocols, socket-communication, thread-synchronization
- Language: C
- Homepage: https://edu.info.uaic.ro/computer-networks/
- Size: 5.45 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Romanian railways application
You can find the romanian version of this document [here](./docs/README_RO.md).
https://github.com/user-attachments/assets/b17811d2-45a2-4e7a-8d8b-987f20e0e028
## Main files
- [official documentation](./docs/RR_documentation.pdf)
- [client application](./client.c)
- [server application](./server.c)## Technologies
- C - socket(), bind(), connect(), pthread_t
- C++ - std::mt1337
- libxml2 - [official page](https://gitlab.gnome.org/GNOME/libxml2)## Features
### The communication protocol
Please consult some definitions from [here](./docs/brainstorm.md)
- [id_train, time_departure, time_arrival, status] routes(location_departure, location_arrival);
- [id_train, time_departure, location_arrival] departures(location_departure);
- [id_train, time_arrival, location_departure] arrivals(location_arrival);
- bool report(id_train, minutes);
- bool quit();### Speed
- prethreaded execution
- create thread for each client
- i/o multiplexing with non-blocking calls### Correctness
- client uses tcp to server when sending data
- client uses udp to server when sending queries
- server uses tcp to client when sending data### Security
- specific procedures for possible errors
- solutions if one party stops responding
- test driven-development## Limitations
- only 1024 users can be connected at once
- not Windows portable