Vorgurakendused 2 prax 1: erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
Resümee puudub
 
Resümee puudub
1. rida: 1. rida:




Ülesandeks on ehitada chatirakendus, mis leiab teisi kasutajaid ise tehtud P2P mehhanismi abil.
Fookus ongi teiste kasutajate leidmisel, mitte niivõrd mugava chati tegemisel.
== Üldkirjeldus ja nõuded ==


Ülesandeks on ehitada chatirakendus
Rakendus peab eeskätt suutma leida üles teise kasutaja (nime järgi, näiteks "jaan") masina
, mis leiab teisi kasutajaid ise tehtud P2P mehhanismi abil. Fookus ongi teiste kasutajate leidmisel, mitte niivõrd mugava chati tegemisel.
ja võtma ühendust selles masinas oleva chatirakendusega. Selleks on vaja nime järgi teada saada ip ja port.
 
Kui ühendus on saadud, peab töötama chat: mingeid kellasid ja vilesid ei ole praksi jaoks vaja teha.


Mis info peab rakendusel olema ja kuidas ta tegutseb:
Esimese kasutamise korral tuleb oma nimi registreerida ja rakendus peab kontrollima, et see nimi
ei oleks kellegi poolt juba kasutusel.


<pre> 
Rakendus peab ühenduma teiste rakendustega hariliku http protokolli kaudu, allpool on toodud detailid.


  - mul omal on fail nimi/ip paaridega
Programmeerimiskeele ja muu tehnoloogia valik on vaba.


     
== Soovitusi ja ideid ==


          tanel pikkid1 255.55.22.222 optionaalne timestamp
Chatiprogramm peab päris kindlasti sisaldama või kasutama http serverit,
muidu ei ole temaga võimalik väljast ühendust võtta.


          tanel  pikkid2 255.55.22.221
Võite realiseerida serveri ise, kasutades võrgust leitavaid näiteid mikro-http-serveri jaoks
(tüüpiliselt paar lehekülge koodi) või haakida rakendus mõne olemasoleva serveriga.


          peeter pikkid3 223.333.44.222 optionaalne timestamp
== Punktiarvestusest ==


Kui kõik eelnimetatu töötab vastu mõne teise grupi chaitprogrammi ja
koodi suudetakse seletada, saab täispunktid.


Kui teiste chatiprogrammidega eriti ei suuda suhelda, aga iseenda koopiatega siiski, saab miinuspunkte.


  - nime registreerimine (yhekordne)
Oma lisa-asjade ehitamise ja töötamise demo korral (mitme kasutaja chat vms) saab täispunktidele lisaks
lisapunkte.


 
== Detailid: mis info peab rakendusel olema ja kuidas tegutseb ==


    - minu masin saadab minu nime ja ip igalepoole ja
* mul omal on fail nimi/ip_pluss_port paaridega järgmise json süntaksiga (palun realiseerida täpselt nii!)
 
      need saadavad edasi ja need saadavad jalle edasi
 
      ja kui keegi leiab et on, siis saadab mulle teate,
 
      et juba hoivatud
 
 
 
 
 
  - nullosa: login sisse, annan oma nime
 
 
 
    - minu rakendus saadab koigile/osale teada ip-dele
 
      minu nime ja pika id ip ja nemad updatevad oma tabeli   
 
 
 
  - esimene osa: kasutaja otsimine, kellega suhelda
 
       
 
    - kirjutan nime:
 
   
 
      - omal olla fail nimi/ip paaridega
 
     
 
          tanel 255.55.22.222
 
          peeter 223.333.44.222
 
         
 
        - kui siin on, siis ok
 
       
 
      - tahaks teiste masinatest haarata
 
     
 
        - kysin tabelit teiste masinatest (kasutades
 
          minu failis olevaid ip-sid)
 
         
 
        - kui teine masin kaib, saadab lihtsalt faili
 
        - kui ma leian tabelist nime, korras, katkestan
 
        - kui ma lopuks ei leia, siis kaks varianti:
 
            - otsin ise uuelt ringilt ip-delt, mis sain
 
            - saadan koigile oma faili ip-dele info, et
 
              nemad otsiks mulle
 
         
 
     
 
   
 
    - tulemus oleks (vahemalt) tema ip teadasaamine
 
 
 
 
 
  - teine osa: traditsiooniline rakendus, mis saadab
 
    teksti teistele
 
 


<pre>   
  [
  ["Tanel Tammet","22.33.44.55:6666"]
  ["Peeter Laud","22.33.44.11:6666"]
  ]
</pre>
</pre>
Millist protokolli ja eeldusi rakendus kasutab:
<pre>
  algul vaikimisi port on 6666
    
    


  nime olemasolu kysimine
* pean saama registreerida oma nime (ühekordne): minu masin saadab minu nime ja ip igalepoole ja need saadavad edasi ja need saadavad jälle edasi ja kui keegi leiab et on, siis saadab mulle teate, et juba hõivatud
** login sisse, annan oma nime
** minu rakendus saadab kõigile/osale teada ip-dele minu nime ja pika id ip ja nemad updatevad oma tabeli   


 
* pean leidma kasutaja, kellega tahan suhelda, ip ja pordi.  Tulemus oleks (vähemalt) tema ip teadasaamine.
 
** kirjutan nime.
  http://11.22.33.44:PORT/chat/findname?name=NIMI&myip=22.22.33.44:6666&ttl=TIMETOLIVE
** omal on mul fail nimi/ip paaridega. Kui sealt leian, ok.
 
** kui ei, küsin teiste masinatest nende faile, kasutades minu failis olevaid ip-sid. Nemad lihtsalt saadavad oma faili.
  vastust ignoreeritakse
** kui ma leian tabelist nime, korras, katkestan
 
** kui ma lõpuks ei leia, siis kaks varianti:
 
***  otsin ise uuelt ringilt ip-delt, mis sain (see peab töötama)
***  saadan kõigile oma faili ip-dele info, et nemad otsiks mulle (kui see realiseerida ja katsetada, saab veidi lisapunkte)


  vastuse postitamine:
* pean saama leitud id ja pordiga chatiprogrammile oma teksti saata ja tema teksti kuvada


 


  http://11.22.33.44:PORT/chat/sendname?name=NIMI&ip=22.22.33.44:6666&ttl=TIMETOLIVE
== Detailid: millist protokolli ja eeldusi rakendus kasutab ==


  sisu ignoreeritakse     


 
Algul vaikimisi port on 6666, kuid see peab olema suhteliselt kergelt muudetav (ümberkompileerimine on ok).


  minu nime/ip teatamine sama kui eelmine
Ip esitatakse alati koos pordiga.


Time to live (TTL) on number, mida päringu edasisaatmise juures tuleks vähendada ja null TTL-ga päringut
ignoreerida: kui peaks tekkima edasisaatmise juhtumeid.
    
    
* Nime olemasolu küsimine on asünkroonne: esitad päringu ja kunagi hiljem saadetakse sulle vastus tagasi.


  http://11.22.33.44:PORT/chat/sendname?name=NIMI&ip=22.22.33.44:6666&ttl=TIMETOLIVE
    http://11.22.33.44:PORT/chat/findname?name=NIMI&myip=22.22.33.44:6666&ttl=TIMETOLIVE


 
Vastust ignoreeritakse! Päringu saaja peaks vastuse leidmise korral (mitte muidu!) omakorda saatma vastuse:


    
    
* Vastuse saatmine nime küsimisele:


  nimed/ipd faili kysimine
    http://11.22.33.44:PORT/chat/sendname?name=NIMI&ip=22.22.33.44:6666&ttl=TIMETOLIVE


 
Sisu ignoreeritakse! Saadud päring tähistab lihtsalt, et nimi on leitud selle ip-ga.


  http://11.22.33.44:PORT/chat/asknames?ttl=TIMETOLIVE
* Minu nime/ip teatamine sama kui eelmine päring, näiteks


    http://11.22.33.44:PORT/chat/sendname?name=NIMI&ip=22.22.33.44:6666&ttl=TIMETOLIVE
    
    
* Nimed/ip_pluss_port faili küsimine 


  vastus ka: fail ise
    http://11.22.33.44:PORT/chat/asknames?ttl=TIMETOLIVE


Vastuseks antakse fail ise, json formaadis:
    
    
 
<pre>   
   [
   [
   ["Tanel Tammet","22.33.44.55:6666"]
   ["Tanel Tammet","22.33.44.55:6666"]
   ["Peeter Laud","22.33.44.11:6666"]
   ["Peeter Laud","22.33.44.11:6666"]
   ]
   ]
</pre>


 
* Chatisõnumi saatmine


  http://11.22.33.44:PORT/chat/sendmessage?myname=tanel&myip=22.33.44.55:6666&message=asasas
    http://11.22.33.44:PORT/chat/sendmessage?myname=tanel&myip=22.33.44.55:6666&message=asasas
 
 
 
</pre>

Redaktsioon: 9. september 2009, kell 20:34


Ülesandeks on ehitada chatirakendus, mis leiab teisi kasutajaid ise tehtud P2P mehhanismi abil. Fookus ongi teiste kasutajate leidmisel, mitte niivõrd mugava chati tegemisel.

Üldkirjeldus ja nõuded

Rakendus peab eeskätt suutma leida üles teise kasutaja (nime järgi, näiteks "jaan") masina ja võtma ühendust selles masinas oleva chatirakendusega. Selleks on vaja nime järgi teada saada ip ja port. Kui ühendus on saadud, peab töötama chat: mingeid kellasid ja vilesid ei ole praksi jaoks vaja teha.

Esimese kasutamise korral tuleb oma nimi registreerida ja rakendus peab kontrollima, et see nimi ei oleks kellegi poolt juba kasutusel.

Rakendus peab ühenduma teiste rakendustega hariliku http protokolli kaudu, allpool on toodud detailid.

Programmeerimiskeele ja muu tehnoloogia valik on vaba.

Soovitusi ja ideid

Chatiprogramm peab päris kindlasti sisaldama või kasutama http serverit, muidu ei ole temaga võimalik väljast ühendust võtta.

Võite realiseerida serveri ise, kasutades võrgust leitavaid näiteid mikro-http-serveri jaoks (tüüpiliselt paar lehekülge koodi) või haakida rakendus mõne olemasoleva serveriga.

Punktiarvestusest

Kui kõik eelnimetatu töötab vastu mõne teise grupi chaitprogrammi ja koodi suudetakse seletada, saab täispunktid.

Kui teiste chatiprogrammidega eriti ei suuda suhelda, aga iseenda koopiatega siiski, saab miinuspunkte.

Oma lisa-asjade ehitamise ja töötamise demo korral (mitme kasutaja chat vms) saab täispunktidele lisaks lisapunkte.

Detailid: mis info peab rakendusel olema ja kuidas tegutseb

  • mul omal on fail nimi/ip_pluss_port paaridega järgmise json süntaksiga (palun realiseerida täpselt nii!)
    
  [
  ["Tanel Tammet","22.33.44.55:6666"]
  ["Peeter Laud","22.33.44.11:6666"]
  ]


  • pean saama registreerida oma nime (ühekordne): minu masin saadab minu nime ja ip igalepoole ja need saadavad edasi ja need saadavad jälle edasi ja kui keegi leiab et on, siis saadab mulle teate, et juba hõivatud
    • login sisse, annan oma nime
    • minu rakendus saadab kõigile/osale teada ip-dele minu nime ja pika id ip ja nemad updatevad oma tabeli
  • pean leidma kasutaja, kellega tahan suhelda, ip ja pordi. Tulemus oleks (vähemalt) tema ip teadasaamine.
    • kirjutan nime.
    • omal on mul fail nimi/ip paaridega. Kui sealt leian, ok.
    • kui ei, küsin teiste masinatest nende faile, kasutades minu failis olevaid ip-sid. Nemad lihtsalt saadavad oma faili.
    • kui ma leian tabelist nime, korras, katkestan
    • kui ma lõpuks ei leia, siis kaks varianti:
      • otsin ise uuelt ringilt ip-delt, mis sain (see peab töötama)
      • saadan kõigile oma faili ip-dele info, et nemad otsiks mulle (kui see realiseerida ja katsetada, saab veidi lisapunkte)
  • pean saama leitud id ja pordiga chatiprogrammile oma teksti saata ja tema teksti kuvada


Detailid: millist protokolli ja eeldusi rakendus kasutab

Algul vaikimisi port on 6666, kuid see peab olema suhteliselt kergelt muudetav (ümberkompileerimine on ok).

Ip esitatakse alati koos pordiga.

Time to live (TTL) on number, mida päringu edasisaatmise juures tuleks vähendada ja null TTL-ga päringut ignoreerida: kui peaks tekkima edasisaatmise juhtumeid.

  • Nime olemasolu küsimine on asünkroonne: esitad päringu ja kunagi hiljem saadetakse sulle vastus tagasi.
    http://11.22.33.44:PORT/chat/findname?name=NIMI&myip=22.22.33.44:6666&ttl=TIMETOLIVE

Vastust ignoreeritakse! Päringu saaja peaks vastuse leidmise korral (mitte muidu!) omakorda saatma vastuse:


  • Vastuse saatmine nime küsimisele:
    http://11.22.33.44:PORT/chat/sendname?name=NIMI&ip=22.22.33.44:6666&ttl=TIMETOLIVE

Sisu ignoreeritakse! Saadud päring tähistab lihtsalt, et nimi on leitud selle ip-ga.

  • Minu nime/ip teatamine sama kui eelmine päring, näiteks
    http://11.22.33.44:PORT/chat/sendname?name=NIMI&ip=22.22.33.44:6666&ttl=TIMETOLIVE
 
  • Nimed/ip_pluss_port faili küsimine
    http://11.22.33.44:PORT/chat/asknames?ttl=TIMETOLIVE

Vastuseks antakse fail ise, json formaadis:

    
  [
  ["Tanel Tammet","22.33.44.55:6666"]
  ["Peeter Laud","22.33.44.11:6666"]
  ]
  • Chatisõnumi saatmine
   http://11.22.33.44:PORT/chat/sendmessage?myname=tanel&myip=22.33.44.55:6666&message=asasas