[c] komunikator

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

mitek
Użytkownik
Posty: 123
Rejestracja: 2006-09-20, 09:13

[c] komunikator

Post autor: mitek »

chce napisac sieciowy komunikator w c i teraz mam taki problem:

1. czy napisac klienta i serwera osobno
2. czy napisac klienta i serwera w jednym?

Ad.1
klient laczy sie z serwerem, serwer przekazuje wiadomosc dalej do drugiego rozmowcy

Ad.2
klienci lacza sie bezposrednio ze soba bez udzialu serwera

ktore rozwiazanie lepsze i jak to zrobic (pomocne funkcje) ?
- czy w pierwszym przypadku nalezy tworzyc kilka socketow (jeden dla serwera i kazdy nastepny dla pary rozmawiajacych)
- jak zrobic aby klient mogl rozmawiac z innym klientem bez blokowania terminala
thopass
Użytkownik
Posty: 173
Rejestracja: 2005-01-08, 13:48
Lokalizacja: Warszawa

Re: [c] komunikator

Post autor: thopass »

mitek pisze:Ad.2
klienci lacza sie bezposrednio ze soba bez udzialu serwera
A jak chcesz wykorzystywać swój komunikator? Jeśli do rozmowy dwóch osób to takie rozwiązanie jest lepsze (prostsze w implementacji). Co jednak zrobisz gdy będziesz chciał dołączyć trzecią i czwartą osobę? (nie mówię, że się nie da oczywiście).
Druga sprawa to pozostawianie wiadomości osobie chwilowo nieobecnej - jeśli chcesz coś takiego zrobić to moim zdaniem wypadałoby projektować aplikację klient-serwer.
mitek pisze:jak zrobic aby klient mogl rozmawiac z innym klientem bez blokowania terminala
Nie rozumiem pytania :-(
Slackware Current + kernel 2.6.32.6 + KDE 3.5.10
registered linux user #412954

[url=http://userbars.org][img]http://img162.imageshack.us/img162/9958/linux1hf8.jpg[/img][/url]
Awatar użytkownika
ulises
Użytkownik
Posty: 314
Rejestracja: 2006-02-10, 20:49
Lokalizacja: Warszawa

Re: [c] komunikator

Post autor: ulises »

ja jako projekt pisałem kiedyś chat i wybrałem rozwiązanie 1

z tym, ze tam wszyscy pisali do wszystkich, z możliwością wysłania pywatnej wiadomości :D
mitek pisze:jak zrobic aby klient mogl rozmawiac z innym klientem bez blokowania terminala
nie wiem, czy dobrze rozumiem, ale jeżeli chodzi Ci o to, że potrzebne będzie jednoczesnie:
-- obsługa socketów
-- obsługa interfejsu użytkownika

no to poprostu wątki (patrz pthread)
Ostatnio zmieniony 2008-09-08, 14:15 przez ulises, łącznie zmieniany 2 razy.
This is Linux land. In silent nights you can hear the Windows machines rebooting.
joi
Użytkownik
Posty: 151
Rejestracja: 2004-10-12, 20:32
Lokalizacja: raczej nie stąd ;)
Kontakt:

Re: [c] komunikator

Post autor: joi »

ulises pisze:no to poprostu wątki (patrz pthread)
wątki są dla cieniasów - "prawdziwi programiści" używają select'a
:PPP
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: [c] komunikator

Post autor: mina86 »

Jako projekt pisałem rozwiązanie 2 z możliwośćią rozmowy każdy z każdym, obsługa stanów i takie tam (działało na multicascie). Całość napisana na selectie -- generalnie polecam, fajna sprawa. Jeżeli chodzi o to co Ty chcesz napisać to zależy czy chcesz coś takiego jak talk, gdzie rozmawiają ze sobą tylko dwie osoby i przynajmniej jedna wie jak i może się dostać do drugiej to rozwiązanie 2 jest chyba faktycznie łatwiejsze -- patrz talk. W przeciwnym wypadku lepiej jednak 1.
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
Awatar użytkownika
Paul999
Użytkownik
Posty: 168
Rejestracja: 2006-04-06, 16:19

Re: [c] komunikator

Post autor: Paul999 »

talk dobra sprawa... ale fajna bajerka jest fifo :D komunikacja miedzy procesami ;)
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: [c] komunikator

Post autor: mina86 »

Aha, jeśli mowa o select() a wątki -- w dobie wielordzeniowych procesorów coraz poważniej należy się zastanawiać nad tworzeniem programów (a nawet i algorytmów, ale to nie dotyczy omawianego problemu) wielowątkowych. (Nie zmienia to jednak faktu, że selecta warto i tak poznać i jeżeli jeszce go nie znasz to jest dobry moment.)
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
ODPOWIEDZ