Institute of Computer Science
  1. Courses
  2. 2024/25 spring
  3. Object-oriented Programming (LTAT.03.003)
ET
Log in

Object-oriented Programming 2024/25 spring

  • Kodutööd ja praktikumid
  • Loengud
  • Kursuse korraldus
  • IDE juhend
  • Süvendusrühm
  • Silumisest

Echo server v2

Täienda echo serverit.

  • Server peab suutma paralleelselt teenindada mitut klienti (üks thread per socket).
  • Server peab vastu võtma kahte tüüpi sõnumeid
    • echo-request, mis sisaldab teksti. vastuseks tuleb saata sama tekst.
    • file-request, mis sisaldab failinime. kui faili nimi on absolute path või faili ei leita, siis saata vastuseks error. muidu tuleb saata vastuseks faili sisu. faile peaks otsima working directoryst (sealt, kus server käivitati).
  • Server võtab ühenduse vastu ja loeb requestide arvu (int). Seejärel loeb server kliendilt esimese requesti ja saadab sellele response. Seejärel loeb järgmise requesti ja saadab sellele response jne.
  • Client käsurea parameetritega saab määrata, mis requeste ja mis järjekorras saadetakse. Käsurea parameetrid käivad paari kaupa: kõigepealt "file" või "echo" ja seejärel faili nimi või sõnumi sisu. Käsurida võib sisaldada mitu paari, nt file shire.txt echo rivendell file mordor.jpg.
  • Client saadab kõigepealt serverile requestide koguarvu. Seejärel saadab esimese requesti ja töötleb response. Seejärel saadab järgmise requesti ja töötleb response jne. Vastuvõetud failid salvestada kausta "received".
  • Suhtluses tuleb kasutada mõistlikku süntaksi. Iga request peaks algama arvuga, mis näitab requesti tüüpi. Iga response peaks algama arvuga, mis näitab staatust (ok, error). Kõik variable length andmed peaks algama length prefixiga.

Vihje: kasulikud meetodid: Path.isAbsolute, Files.isRegularFile, Files.readAllBytes, Files.write

Vihje: socketi peaks sulgema see thread, mis viimasena socketiga midagi toimetab. kasuta try-with-resources:

AutoCloseable someResource; // field

void method() {
  try (someResource) {
    someResource.use();
  } // someResource pannakse kinni
}
  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment