Kezdőoldal » Számítástechnika » Programozás » Sürgős! Egy példa programot...

Sürgős! Egy példa programot tudnátok mutatni amiben több szerver kommunikál egy darab szerverrel?

Figyelt kérdés

Ha valaki tud ilyet a neten az kérem írjon rá linket

HOgyan keressek rá a neten?


C alatt Unixon futtatva.


2012. dec. 7. 21:44
 1/8 iostream ***** válasza:
Na most a szerver az, ami kiszolgál. Egy kommunikációban az egyik fél mindig a szerver, a másik a kliens. Mit szeretnél pontosan?
2012. dec. 7. 21:57
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:

pfuuuu ez jol elírtam.


Tobb cliens (min 5drb) egy darab szerverrel kommunikal.

Pl. ide oda tudok kuldeni szoveget. vagy akar csak egy karaktert

2012. dec. 7. 22:19
 3/8 iostream ***** válasza:

Na most ehhez kell egy kliens, meg egy szerver, és több klienst kell indítani. Ilyen egyszerű az élet. A szerverek alapvetően fel vannak készítve arra, hogy több klienst is kiszolgáljanak.


[link]

2012. dec. 7. 22:25
Hasznos számodra ez a válasz?
 4/8 A kérdező kommentje:

En is talaltam ami meg mukodik is ha futattom.


[link]


[link]



de ha egy masik cliens2.c .t futattok egy masik terminalban akkor nem mukodik.

2012. dec. 7. 22:41
 5/8 iostream ***** válasza:
Persze, mert ez egyszerre csak egy klienssel foglalkozik. A belső ciklusból csak akkor lép ki, ha 'q'-t (vagy 'Q'-t) küld a kliens.
2012. dec. 7. 22:47
Hasznos számodra ez a válasz?
 6/8 A kérdező kommentje:

EZT TALALTAM:"

Az accept addig vár, amíg nem akar egy kliens kapcsolódni a "listening socket"-re. Felépíti a kapcsolatot, de NEM a "listening socket"-re (nem arra, amit megadtunk paraméterként!), hanem létrehoz egy új socket-et, ez lesz a kliens socket, ezzel kapcsolódik össze a kliens. Ezt adja vissza a függvény. Az eredeti socket megmarad utána nekünk, és akárhányszor meghívhatjuk vele az accept-et.


Egy "listening socket"-re többször is meghívhatjuk az accept függvényt, ami mindig más kliens socket-et fog visszaadni. Tehát egy szerver programból egyszerre több klienst is tudunk kiszolgálni, minden hívás az accept-re egy új, a többitől független csatornát hoz létre egy újabb kliens felé (persze, ha volt újabb kliens). A kliens socket-ek mind ugyanarra a portra vannak kötve, ahová a listening socket-et is kötöttük. Ezzel azonban nem lesz gondunk, a TCP nagyon jól tudja, hogy melyik üzenet hová megy, a kapcsolatokat multiplexálja. A kapcsolatokat négy adat alapján azonosítja : Kliens-IP,Kliens-Port,Szerver-IP,Szerver-PORT (plusz a protokoll (TCP,UDP....)).


Ahhoz persze, hogy több klienst tudjunk kiszolgálni, a szerver programot többszálasra, illetve többfolyamatosra (multithreading/multiprocessing) kell megírni.



Példa:

struct sockaddr_in client_addr;

int ssd, csd, length;

...........

if ((cfd = accept(ssd, (struct sockaddr *)&client_addr, &length) < 0) {

perror("accept");

exit(1);

}

/* cfd most a klienssel összekapcsolt socket leíróját tartalmazza */

/* innen lehet kommunikálni*/

Kommunikáció a klienssel

"


Ez alapján ezt a klines server meglehet csinálni vagyis eleg hozzá ennyi,ennyi infobol kiderul hogy hogy kell csinálni?

2012. dec. 7. 22:54
 7/8 iostream ***** válasza:
Na most ha szálakat is bele akarsz keverni, soha nem fogod megoldani. És nem, annyi info alapján nem lehet megcsinálni, mert ha meg tudnád, már megcsináltad volna. Nézd meg a rohadt linkemet, azért linkeltem be. Azon van egy megoldás (korrekcióval együtt), a select függvény a kulcs.
2012. dec. 7. 23:09
Hasznos számodra ez a válasz?
 8/8 A kérdező kommentje:

Ok. megneztem en azt mar mindjart.


Beirtam a includokat.

Futattom. a Serverre nem ir ki hibat a gcc.

Cliensnel azt irja 22,40 sor error: expected expression before '<'token


megpobaltam a hiba ellenere futatni,de azt irja majd a program hogy

bind:Adress already in use



Lekapcsoltm a terminalokat vartam egy 5 percet majd ujra futattam de ugyan az

2012. dec. 8. 09:23

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!