Avatar
Rasta_Man
Člen
Avatar
Rasta_Man:

Ahoj dneska jsem vyděl tutoriál na TCP/IP komunikaci tak mě napadlo že bych mohl udělat chat, mělo by to server a klienta ale zatím se mi to nějak nepodařilo pořešit server sice přímá a klient odesílá ale nevím jak udělat aby server vlastně odesílal jiným klientům, prostě nevím jak vzít zprávu o jednoho uživatele a poslat to pomocí serveru ostatním. Byl bych rád kdyby někdo poradil :)

 
Odpovědět 18.2.2013 21:40
Avatar
Зайчик
Člen
Avatar
Odpovídá na Rasta_Man
Зайчик:

u chatu se to dělá tak že server naslouchá i odesílá, client nasouchá i odesílá :) mě se tu nechce celej server psát počkej si a udělám na to tutoriál nebo ti tu někdo jiný poradí :)

Nahoru Odpovědět 18.2.2013 22:03
Коммунизм для нашего будущего!
Avatar
Rasta_Man
Člen
Avatar
Rasta_Man:

Jo děkuji pokusím se to nějak udělat doufám že z toho bude alespoň trochu dobrý program. :)

 
Nahoru Odpovědět 18.2.2013 22:05
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Зайчик
David Čápka:

U chatu jsou 2 klienti a 1 server, ne?

Nahoru Odpovědět 18.2.2013 22:05
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Зайчик
Člen
Avatar
Odpovídá na David Čápka
Зайчик:

u chatu může bejt 50000 klientu a jeden server jde oto že obě strany naslouchaj i odesílaj

Nahoru Odpovědět 18.2.2013 22:06
Коммунизм для нашего будущего!
Avatar
David Čápka
Tým ITnetwork
Avatar
Nahoru Odpovědět 18.2.2013 22:07
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na Зайчик
Luboš Běhounek (Satik):

Naslouchá jen server. Že naslouchá neznamená, že nemůže odesílat data.

Nahoru Odpovědět 18.2.2013 23:44
:)
Avatar
Зайчик
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
Зайчик:

jj a klient kouká do zdi a vymýšlí si to co ostatní posílají? Když nenaslouchá a jen odesílá ? :D

Nahoru Odpovědět 18.2.2013 23:47
Коммунизм для нашего будущего!
Avatar
Odpovídá na Зайчик
Luboš Běhounek (Satik):

To že naslouchá se týká jen navazování spojení, samotné spojení je už pak obostranné :)

Nahoru Odpovědět  +1 19.2.2013 0:04
:)
Avatar
matesax
Redaktor
Avatar
matesax:

Chat bych řešil přes sockety, kde je server řešen obecným modelem klienta. Všechny akce klienta jsou vnořené v prvotní akci - onstart. Ta má parametr typu IWebSocketCon­nection, jakož i vnořená akce onopen. Tím se nabízí jednoduché řešení - v onopen přidáš nového příchozího do seznamu všech klientů a v onclose jej zase vymažeš. Parametr v
onstart je hlavní - což zase něco umož^nuje - zpráva kterou dostaneš je na 10000% od IWebSocketCon­nection které nabízí onstart. Tím tedy můžeš volat na nekonkrétního odesílatele. Pokud budeš chtít nějakého konkrétního, tak tu máš právě onen seznam všech klientů...

 
Nahoru Odpovědět 19.2.2013 6:28
Avatar
matesax
Redaktor
Avatar
matesax:
WebSocketServer server = new WebSocketServer("ws://IP:port");

List<IWebSocketConnection> clients = new List<IWebSocketConnection>();

server.Start(socket => // nový klient se připojil
{
    socket.OnOpen = () => // pohlídání otevření spojení příchozího klienta
    {
        clients.Add(socket);
    };

    socket.OnClose = () => // ukončení spojení
    {

    };

    socket.OnMessage = message => // přijetí nové zprávy
    {
        socket.Send(string);
    };
});
Editováno 19.2.2013 7:30
 
Nahoru Odpovědět 19.2.2013 7:26
Avatar
matesax
Redaktor
Avatar
matesax:

Samozřejmě:

socket.OnClose = () =>
{
    clients.Remove(socket);
};
 
Nahoru Odpovědět 19.2.2013 7:47
Avatar
Зайчик
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
Зайчик:

aha, to pak jo ;) mám ty pojmy popletený malinko :P

Nahoru Odpovědět 19.2.2013 11:18
Коммунизм для нашего будущего!
Avatar
Mediel
Redaktor
Avatar
Odpovídá na matesax
Mediel:

Co kdyz se na server pripoji vice lidi a zacnou posilat nejake sahosahle texty? Nebo dokonce nejaky soubor? Tady bych pouzil ta vlakna, jak jsi o nich predtim basnil, ale to ne... tady zas jdes na dinosaura s kapesnim nozikem....

Nahoru Odpovědět 23.2.2013 13:16
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
matesax
Redaktor
Avatar
Odpovídá na Mediel
matesax:

Coo? Soubory sem nepleť - ty pošleš přes stream... Sáhodlouhé texty - není problém... Co to blábolíš? Chaty přes sockety fungují bez problémů...

 
Nahoru Odpovědět 23.2.2013 13:19
Avatar
Mediel
Redaktor
Avatar
Odpovídá na matesax
Mediel:

:D No, rekneme, ze vim o cem mluvim, rekneme, ze treba jsem zkousel delat programek pro skolu, takovy chat po lan a bez vlaken to bylo nepouzitelne :) Ale pokud chces chat mezi 2 pc, tak ano, nepotrebujes vlakna :)

Nahoru Odpovědět 23.2.2013 13:21
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
matesax
Redaktor
Avatar
Odpovídá na Mediel
matesax:

V životě jsem nepotřeboval vlákna na chat. Jako k čemu? Chat se řeší podobně jako ty sockety - protože nač dělat xy klientů... Je to pořád jeden klient, s proměnitelnou IP, ddd,...

 
Nahoru Odpovědět 23.2.2013 13:27
Avatar
Mediel
Redaktor
Avatar
Mediel:

:D v tom pripade jsi vzivote neudelal poradny chat :D Dobre napisu to trochu jinak...

neni chat a chat... Je rozdil mit jedno okno a do nej bouchat zpravy od vsech a je rozdil mit jedno okno, kam chodi zpravy od vsech a pak treba dalsi okno na soukrome zpravy mezi 2 ci vice uzivateli. Tedy "skupinovy chat" ale zacinam se obavat, ze tva vsevedomost a vsemohoucnost je natolik silna, ze budu muset polozit zbrane :D Casto byvam oslepen tvoji moudrosti a tak bych nerad, aby tve svetlo vyhaslo :D

Nahoru Odpovědět  +1 23.2.2013 13:37
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
Mediel
Redaktor
Avatar
Odpovídá na Rasta_Man
Mediel:

Ahoj, koukni se na tohle :) http://stackoverflow.com/…on-threading je to vcelku zajimave a vypada to uz jako kvalitni chat :)

Nahoru Odpovědět 23.2.2013 13:53
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
Rasta_Man
Člen
Avatar
Odpovídá na Mediel
Rasta_Man:

Děkuji za odpověď a děkuji taky všem ostatním skusím to nějak splácat :D

 
Nahoru Odpovědět 23.2.2013 21:51
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 20 zpráv z 20.