Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

peer-2-peer u c++-u

[es] :: C/C++ programiranje :: peer-2-peer u c++-u

[ Pregleda: 2754 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

erno
Ernad Besirevic
Graz

Član broj: 56944
Poruke: 261
*.tu-graz.ac.at.



Profil

icon peer-2-peer u c++-u29.11.2006. u 16:51 - pre 210 meseci
zdravo ljudi,

postao sam prije nekoliko da imam problem sa threadsima i to sam rjesio. e sad mi treba neko pomoci kako da ovo odradim. trebam napisati peer-to-peer aplikaciju nesto kao igrica. dakle, da imam neka dva racunara koji vrte tu moju "igru" i recimo prvi se konektuje na drugog i onda pocne igra. ja sam mislio da napravim nekako jedan ceka uvijek konekciju (ne smije tako biti nego oba su istovremeno i client i server), a drugi se konektuje pa kad se konektuje salje request, postaje server i ceka odgovor, onaj prvi obradi request i postaje client i salje svoj request i tako naizjmenicno. dakle, oba moraju biti i server i klijent istovremeno. molit cu za ideje ako moze. dal da napravim dva threada od kojih je jedan klijent a drugi server i da tako napravim ovaj efekt da su oba racunara istovremeno i klijent i server? ako bih tako radio onda bi morao i koristiti scheduler ili? hvala za svaku pomoc.

poz,
erno
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
161.53.55.*



+9 Profil

icon Re: peer-2-peer u c++-u30.11.2006. u 10:18 - pre 210 meseci
Pa najlakše bi ti bilo baš tako i napraviti... Da su oba i klijent i server. Tako nećeš imati komplikacija ni sa primanjem ni sa slanjem zahtjeva. Evo tu sam prije nekog vremena napravio baš to što bi tebi moglo poslužiti. Ovo je chat aplikacija. Dakle, prenosi tekst. Ti umjesto toga stavi da prenosi one podatke koji tebi trebaju i to je to... Ista stvar jer je ova chat aplikacija ujedno i klijent i server..

http://www.elitesecurity.org/t215974-0#1290572
 
Odgovor na temu

erno
Ernad Besirevic
Graz

Član broj: 56944
Poruke: 261
*.tu-graz.ac.at.



Profil

icon Re: peer-2-peer u c++-u30.11.2006. u 13:36 - pre 210 meseci
hvala na odgovoru, ali ja ne smijem koristiti te biblioteke u svojoj aplikaciji -> mogu koristiti samo standardne biblioteke. poceo sam pisati klase za threading, dakle, thread, mutex i event. ako ima neko lakse rjesenje super. ali mislim da cu morati ovako raditi da bih istovremeno mogao pratiti i server i client. hvala jos jednom.

poz,
erno
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
161.53.55.*



+9 Profil

icon Re: peer-2-peer u c++-u30.11.2006. u 13:51 - pre 210 meseci
Ne razumijem... Zašto ne smiješ? Koje razvojno okruženje i platformu koristiš?
 
Odgovor na temu

erno
Ernad Besirevic
Graz

Član broj: 56944
Poruke: 261
*.tu-graz.ac.at.



Profil

icon Re: peer-2-peer u c++-u30.11.2006. u 14:07 - pre 210 meseci
koristim linux, a to mi je zadatak na faxu. ne znam uopste kako da realizujem ovo sa threadsima. dal da napravim dva threada:

Code:

pthread_t t1;
pthread_t t2;


i da s njima radim ili da radim nekako sa mutexom i s njim odredjujem kad ce koji i koliko raditi.

dakle, malo detaljnije (ako treba poslat cu ti code sta sam do sad uradio):

klase: Server, Client, Thread

Server mi ceka konekcije i njega sam napravio da za svaku konekciju pravi novi thread, a to mi i ne treba ustvari.
Client salje requests -> u principu su to XML objekti koje trebam slati na server (tj. remote computer)
Thread bi mi trebao upravljati threadovima start(), wait(), stop(), detach()...

e sad ne znam kako da dalje ovo rjesim. dal da u main funkciji napravim dakle dva threada-jedan za client jedan za server al opet kako da upravljam s njima?

thnx
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
161.53.55.*



+9 Profil

icon Re: peer-2-peer u c++-u30.11.2006. u 14:18 - pre 210 meseci
Ali ovo što sam ti napisao se može compilirati i pod Linuxom... ako koristiš npr. Red Hat 7.3 ili neki malo stariji Linux gdje se može instalirati Kylix (Linux verzija Borland C++ Buildera). Najbolje od svega ovaj Indy server sam brine o konekcijama, threadovima itd..

No opet.. ne znam što vi radite i da li postoje specifični zahtjevi glede realizacije..
 
Odgovor na temu

erno
Ernad Besirevic
Graz

Član broj: 56944
Poruke: 261
*.tu-graz.ac.at.



Profil

icon Re: peer-2-peer u c++-u30.11.2006. u 14:25 - pre 210 meseci
hvala na pomoci, ali kako sam vec rekao ne smijem koristiti nikakve biblioteke koje nisu standardne.
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
*.dynamic.sbb.co.yu.



Profil

icon Re: peer-2-peer u c++-u01.12.2006. u 10:53 - pre 210 meseci
Moj predlog je da korisnik igrice izabere da li ce biti server ili klijent. Ako je server, onda kreira 2 socket-a, tako da jedan osluskuje broadcast (preko UDP-a) poruke, a drugi prihvata konekcije.
Klijent ce prvo kreirati broadcast socket i poslati broadcast (na adresu 255.255.255.255) poruku "ima li servera u LAN-u". Tu poruku prihvara server i salje odgovor o svojoj IP adresi i portu gde ocekuje klijenta. AKo ima vise servera, svi ce polsati odgovor tako da klijent moze da bira sa kim ce da se igra. Klijent dobije jedan ili vise odgovora i kreira novi socket (TCP) za komunikaciju sa serverom. Zatim ce klijent da se konektuje na server. U tom trenutku, listen socket na serveru dobija zahtev za konekcijom, odradi se accept koji kreira socket za komunikaciju sa tim klijentom.
E sad.. tu ima nekoliko zvrcki.. trebace ti puno threadova. npr.. server mora da ima broadcast thread koje ce se baviti sa broadcast porukama, zatim thread za prijem konekcija i thread za svakog konektovanog klijenta. Klijent ce (pored glavnog threada) imati samo 1 thread za komunikaciju sa serverom.

 
Odgovor na temu

erno
Ernad Besirevic
Graz

Član broj: 56944
Poruke: 261
*.tu-graz.ac.at.



Profil

icon Re: peer-2-peer u c++-u01.12.2006. u 12:01 - pre 210 meseci
problem je u tome da ne smije biti tako da jedan izabere a drugi se konektuje. u mom slucaju ja ne znam koji ce se konektovati tj. oba se mogu konektovati. da je tako bilo bi super, ali nije. sljedece: TCP se koristi ne UDP. e sad problem je u multithreadingu. dakle, kako da napravim da moja app moze "istovremeno" citati ulazni socket i slati na izlazni socket. ok, jasno napravim dva threada i ok, ali ne znam dal mi u ovom slucaju trebaju mutex i cond var jer oni bi se zapravo trebali koristiti u slucaju da threadovi djele isti resource, a kod mene to nije slucaj. znaci samo me zanima ova sinhronizacija izmedju threadova. hvala i cujemo se

poz,
erno
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
91.148.98.*



Profil

icon Re: peer-2-peer u c++-u01.12.2006. u 22:34 - pre 210 meseci
Da li si ikada igrao neku multiplayer igru (Counter, Quake, Unreal Tournament, ...)? Uradi isto tako i neces pogresiti.
 
Odgovor na temu

erno
Ernad Besirevic
Graz

Član broj: 56944
Poruke: 261
*.liwest.at.



Profil

icon Re: peer-2-peer u c++-u02.12.2006. u 09:20 - pre 210 meseci
sorry al nisam bas neki gamer :-). mislim da funkcionise ovako npr. za dva compa direktno spojena: jedan je server a drugi se konektuje na njega ili? ako jest tako, vec sam objasnio da ne smije tako biti jer ne znam koji ce biti server a koji client. evo ovo mi treba


comp1
/ \
thread1 thread2
Accept() Send()

e sad nesto kao:

Code:

while(1)
{
  // ovdje se pokrenu threadsi i vrte se dok ne zavrsi program
}


e kako bi se ovo moglo odraditi sa obicne dvije funkcije recimo hello1 i hello2. jeli dovoljno kad napravim thread1 i thread2 predati funkciji pthread_create ove dvije funkcije kao argumente ili tu ima jos neki vrag sto bi sluzilo kao scheduler. e to mi je nejasno. vjerovatno ima neka dobra knjiga o tome, ali nazalost ja nemam tako puno vremena da odradim ovo. thnx
 
Odgovor na temu

nikoladsp
nikola radovanovic
trenutno-developer
novi sad

Član broj: 5455
Poruke: 193
*.ns.ac.yu.



Profil

icon Re: peer-2-peer u c++-u12.12.2006. u 07:38 - pre 210 meseci
cao,
malo sam listao tvoj post, i preporucio bih ti ako ikako mozes/smes, da razvijas posebno server,a posebno klijent;iz jednog veoma prostog razloga-pre ili kasnije tvoja ce aplikacija narasti i koristice GUI,a to ce ti izuzetno otezati posao(znam to iz licnog iskustva),ali naravno to je moguce napraviti...ono sto me zanima(jer kazes da pravic svoje klase za threading) dali ti wrapujesh pthread biblioteku ili pravis svoju perverziju (u ovom drugom slucaju neka ti je Bog u pomoci)?inace bi ti savetovao da server i klijent mrezni interfejs kreiras preko socket kontejnera(razvijes ili maznes negde klasu za socket i koristis neki stl kontejner koji ce ti sluziti za cuvanje konektovanih socketa) i da koristis select() za server.mozes napraviti na klijentu poseban socket za podatke sa servera a poseban za komande/poruke.u ovom slucaju,takodje ces verovatno morati da razvijes neki jednostavan protokol i shibas poruke (komande) izmedju servera i klijenta...
sad,znam da ovo ovako receno zvuci malo (vise) shitty,ali tako sam radio u praksi te stvari (doduse na win domenu,ali je princip isti).sto se tice tredova,potreban ti je jedan za klijent da cita podatke(ovaj cak mozes i da izbacis ako podatke saljes kroz poruke),a ostalo mozes resiti kontejnerima koje sam ti spomenuo (za poruke i na serveru i na klijentu)
ja sam panker sa diplomom kod moje mame...
 
Odgovor na temu

erno
Ernad Besirevic
Graz

Član broj: 56944
Poruke: 261
*.tu-graz.ac.at.



Profil

icon Re: peer-2-peer u c++-u12.12.2006. u 13:09 - pre 210 meseci
thnx za odgovor. malo me nervira to sa schedulingom. ja sam mislio da napravim bas tako kako si rekao posebno client posebno server pa onda napraviti za svakog po thread naravno i onda pustiti da se naizmjenicno mjenjaju u radu. za ovo mi treba scheduler (ako grjesim neka me neko ispravi). e tu vec nastupa problem. tacno, mogao sam i sa select funkcijom ali negdje sam morao napraviti gresku tako da... hvala jos jednom.

poz,
erno
 
Odgovor na temu

[es] :: C/C++ programiranje :: peer-2-peer u c++-u

[ Pregleda: 2754 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.