Prosty komunikator w sieci LAN


(Jarek P) #1

Witam. Wiem, że jest dużo tematów tego typu,ale nigdzie nie znalazłem odpowiedzi...

Mam w domu sieć LAN (2 komputery) i chciałbym zrobić prosty komunikator. U mnie serwer,a u brata klient, ale bez żadnych buttonów itp. Prosta konsola i wiadomości po kliknięciu enter (to potrafię :slight_smile: ). Chodzi mi o samo połączenie. Oczywiście znamy swoje IP... Myślałem nad TCP, ale kompletnie nie wiem, jak się do tego zabrać.


([alex]) #2

http://program-na-zlecenie.cba.pl/forum ... p?f=6&t=15


(Jarek P) #3

Ups. Zapomniałem wspomnieć, że chodzi mi o C#.


(Tomek Matz) #4

Poczytaj o WCF. To jest technologia służąca właśnie do tworzenia aplikacji rozproszonych.


(Jarek P) #5

Naprawdę nie da się nic wymyślić z C# ? Widziałem dość skomplikowane komunikatory w C#, ale mi chodzi o taki bardzo prosty.


(Tomek Matz) #6

WCF to jest technologia .NET. Możesz przy jej użyciu pisać programy, między innymi. w C#. Mogą to być programy oparte na protokole TCP, HTTP czy też programy peer 2 peer.


(Jarek P) #7

Aha... Dzięki za wyjaśnienie :slight_smile: Zaraz pokombinuje. Jakieś podpowiedzi, jak się do tego zabrać i gdzie tego szukać ?


(skandyn) #8

Tutaj jest gotowy program:

http://chatex.zxq.net

Pozdrawiam


(Jarek P) #9

Hmmm. Mam już prawie wszystko. Nie potrafię tylko wysłać tablic byte[], czyli samej wiadomości. Jakieś propozycje ? (Chodzi mi wysłanie i odczyt) :frowning:


(Tomek Matz) #10

Nie wiem na co się ostatecznie zdecydowałeś, ale jeśli na WCF to przeczytaj ten artykuł http://idunno.org/archive/2008/05/29/wcf-callbacks-a-beginners-guide.aspx (na samym dole udostępniony jest kod źródłowy). Żeby host WCF mógł wysyłać dane do klientów usługi WCF (i nie mam tu na myśli działania na zasadzie request/response) trzeba zaimplementować coś co jest określane jako Callback Contract (w zasadzie dopiero dziś się o tym dowiedziałem :D).

Ściągnij sobie udostępniony tam kod źródłowy, skompiluj i odpal WCFServiceHost.exe (ale bezpośrednio z exe, a nie z Visual Studio). Jak już to odpalisz, to w Visual Studio w projekcie MessageSender uaktualnij referencję MessageService (klikasz prawym na nazwę tej referencji i wybierasz Update Service Reference). Jak to zrobisz to podmień jeszcze w tym projekcie w metodzie main te linijki:

Console.ReadKey();

Listener listener = new Listener();

listener.Open();

na

Listener listener = new Listener();

listener.Open();

Console.ReadKey();

Skompiluj ten projekt i odpal kilka jego exe (mając cały czas włączony WCFServiceHost.exe). Następnie w jednym z okienek klienta wciśnij enter (bądź dowolny klawisz) i zobacz co się stanie w okienkach pozostałych klientów.


(Jarek P) #11

Dzięki. Rozwiązane.