Skip to content

A client-server application developed on Linux, which provides digital communication for the transport industry

Notifications You must be signed in to change notification settings

petru-braha/RR-application

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Romanian railways application

You can find the romanian version of this document here.

video_ro_comp.mp4

Connect

To establish connection with my server make sure to:

  • install openvpn3
  • start a session using this vpn key (openvpn3 session-start --config docs/vpnkey.ovpn)
  • send a mail at [email protected] for the credentials asked at the previous step
  • compile and run the client application with the following arguments: '10.100.0.30' and '2970'

Main files

Technologies

  • C - socket(), bind(), connect(), pthread_t
  • C++ - std::mt1337
  • libxml2 - official page

Features

The communication protocol

Please consult some definitions from here

  • [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