ATNEL tech-forum https://forum.atnel.pl/ |
|
Visual C# -- Komunikacja UDP - Wysylanie - Czesc I https://forum.atnel.pl/topic8960.html |
Strona 1 z 1 |
Autor: | RafPe [ 25 paź 2014, o 23:50 ] |
Tytuł: | Visual C# -- Komunikacja UDP - Wysylanie - Czesc I |
Witam wszystkich! Ostatnimi czasy na topie jest problem wlasnej komunikacji UDP. Jest to temat dosc popularny jako , ze Mirek porusza go w BB. Wiec kazdy kto tam dochodzi staje przed problemem kiedy chcialby zrobic cos swojego. Jak osobiscie zauwazylem wiekszosc z Was wybiera droge przez programowanie C#. No i tutaj dla niektorych moga sie pojawic problemy jesli jeszcze wczesniej nie bawili sie tym jezykiem programowania. Dlatego postanowilem napisac poradnik dotyczacy tworzenia wlasnej aplikacji w C# wlasnie do komunikacji UDP. Bedzie on oczywiscie przeprowadzac Was krok po kroku jak osiagnac wybrany cel. Na chwile obecna aby kazdy mogl pracowac w swoim tempie i aby mozna bylo pomoc ludziom w zrozumieniu dzialania tych mechanizmow poradnik bedzie podzielony na kilka czesci.
Kolejne czesci bede uzupelnial az opracujemy w pelni wielowatkowy program do wysylania/odbierania. Technologia jaka wykorzystamy to Visual Studio. Ja osobiscie bede uzywac 2013 ale mozna to osiagnac rowniez korzystajac ze wczesniejszych wersji. Jedyne co moze byc problematyczne to , ze zrzuty ekranu prezentowane przeze mnie beda w j.ang wiec jak tylko bede mogl to staral sie Was naprowadzic na ta opcje w j.pol Kolejna informacja to forma projektu. Bedziemy uzywac Windows Forms. W dzisiejszych czasach to juz jak "dziadek" ale da rade , zebysmy mogli osiagnac to czego potrzebujemy Przygotowanie srodowiska do pracy Wiec uruchamiamy nasze Visual Studio i tworzymy nasz nowy projekt. Nadajemy mu jakas "sensowna" nazwe i wybieramy odpowiednio
Jako , ze chcialbym utrzymac ten poradnik w tonie funkcjonalnym pozostawiam Wam drodzy czytelnicy uklad graficzny aplikacji My zaczniemy od bardzo prostej rzeczy , czyli ..... Dodajemy pierwsza kontrolke W naszej aplikacji bedziemy dzialac w odpowiedzi na jakies zdarzenie. Te najbardziej powszechne to "nacisniecie guzika". Wiec .... z Toolbox widocznego po lewej stronie wybieramy "button" i przeciagamy go na nasza aplikacje. W ten oto sposob mamy zakonczony wstepny etap. Nastepnie ,zeby nasza aplikacja wiedziala , ze cos ma sie stac klikamy dwa razy w nasz guzik. Visual Studio automatycznie utworzy dla nas metode obslugujaca zdarzenie dla wcisnietego guzika Jesli nie zmienialiscie Cie nazwy guzika i pozostaliscie przy domyslnej powinniscie teraz miec cos na wzor tego co w ponizszym zrzucie ekranu ... czyli poprawnie3 utworzona metode dla obslugi naszego zdarzenia. Aby dalej moc pracowac i tworzyc kod musimy dodac nastepujaca referencje u gory naszego kodu , bo inaczej ani rusz język csharp Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Zanim przejdziemy dalej chcialem Wam pokazac , w ktorym miejscu bede tworzyc zmienne GLOBALNE. Dlatego zawsze kiedy pozniej bede wspominac , ze tworze zmienna takiego zasiegu - zwroccie prosze uwage gdzie ona sie znajduje. język csharp Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. W tym momencie mozemy stworzyc juz zmienne , ktora wykorzystamy do wysylania naszych ramek UDP. Zaczynamy od IPEndpoint.Potrzebna nam bedzie ona w dalszej czesci. Dzieki tej zmiennej definiujemy jaki adres IP wykorzystamy oraz na jakim porcie. Jako , ze bedziemy wysylac dane podajemy tutaj dane naszego komputera / serwera. Port 1234 jest przykladowy i moze/powienenen byc zmieniony na cokolwiek co Wam odpowiada. Ponizsze zmienne jeszcze NIE DEFINIUJA naszego urzadzenia DOCELOWEGO ... to pozniej język csharp Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Prosze poswiec chwilke zeby zobaczyc co sie dzieje w tym kodzie. Tworzymy nasza zmienna a nastepnie jako parametry do jej stworzenia musimy podac adres IP naszego komputera/serwera a pozniej port , ktory wykorzystamy do komunikacji UDP. Bardzo wazne na tym etapie jest by adres IP byl poprawny. W przeciwnym wypadku aplikacja niestety sie wysypie (kontrola bledow to temat rzeka na inny poradnik wiec zostawiam to w Twojej mocy) Teraz jestesmy gotowi aby stworzyc zmienna , ktora posluzy nam do komunikacji UDP. Bedzie to takze zmienna o zasiegu GLOBALNYM i bedzie typu UDPClient Dzieki powyzszej modyfikacji nasz kod zmienia sie troszeczke ... i wyglada nastepujaco. język csharp Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Po tych wszystkich zabiegach przejdziemy do naszej metody obslugujacej nacisniecie naszego guzika. Przed chwila zainicjalizowalismy sobie zmienna o nazwie klient i to wlasnie ja tam wykorzystamy do wysylania danych. Zanim jednak przejdziemy do sedna ... Pamietaj , ze bedziemy wysylac bajty nikt nie oczekuje , ze bedziesz w stanie wpisac bajty do wyslania. Mirek slusznie zauwaza ,ze chcemy pracowac z ASCII - dlatego wiec chcialbym na wstepie zaznaczyc , ze aby to obslugiwac w C# bedziemy korzystac z dostepnych metod opisanych ponizej....
Aby powyzsze zadzialalo prawidlowo musimy dodac kolejna referencje na poczatku naszego programu. Tym razem jest ona potrzebna do dzialania powyzszych funkcji. język csharp Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Moze juz zastanawiasz sie gdzie jest cos definiujacego miejsce do ktorego wysylamy nasze ramki ? No i masz racje. Nie zdefiniowalismy takiego jeszcze. Tak jak i wczesniej bedzie to zmienna o zasiegu GLOBALNYM i nazwie ep_destination język csharp Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. W powyzszym musisz zdefiniowac adres IP pod ktory bedziesz wysylac dane oraz port na ktorym docelowa aplikacja nasluchuje. Teraz mamy wszystkie nasze skladniki gotowe.... wracamy wiec do miejsca wysylania naszej ramki. We wczesniej wspomnianej metodzie przygotujemy sobie nowa zmienna typu string oraz wyslemy ja wykorzystujac wczesniejsza zmienna o nazwie klient język csharp Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. No i na chwile obecna to wszystko - po uruchomieniu naszej aplikacji oraz klikniecia guzika nasza aplikacja wysle pakiet UDP pod wskazany adres oraz port. Aby potwierdzic to sprawdzamy sobie konsolowa aplikacja ktora nasluchuje na okreslonym porcie.... no i dziala Jednak ktos moglby powiedziec ... ale czy naprawde dziala ? Na potrzeby poradnika zrobilem zrzut ekranu programem do analizy ruchu sieciowego (takze na jego potrzeby byl to broadcast ale dziala tak samo ) No i na chwile obecna to chyba tyle jesli chodzi o czesc I. Jesli chodzi o punkty warte zwrocenia uwagi to :
Mam nadzieje ,ze sie przyda. Jesli bedzie zapotrzebowanie bedziemy kontynuowac serie. Pozdrawiam Raf |
Autor: | mirekk36 [ 26 paź 2014, o 01:05 ] |
Tytuł: | Re: Visual C# -- Komunikacja UDP - Wysylanie - Czesc I |
Rafał to się bardziej nadaje do działu PORADNIKI kawał fajnej roboty ... dla wszystkich CeHaszowników czy tam SiSzarpowców |
Autor: | RafPe [ 26 paź 2014, o 01:46 ] |
Tytuł: | Re: Visual C# -- Komunikacja UDP - Wysylanie - Czesc I |
mirekk36 napisał(a): to się bardziej nadaje do działu PORADNIKI Czytalem zasady i wg tego http://forum.atnel.pl/topic6018.html#p70573 poradnik ten powinien byl tu wyladowac No i zobaczymy czy sie komus przyda jak tak to bedziemy szlifowac dalej takie uzulepnienia dla wyobrazni poruszonej BB'kiem |
Autor: | programek [ 26 paź 2014, o 08:46 ] |
Tytuł: | Re: Visual C# -- Komunikacja UDP - Wysylanie - Czesc I |
Dzięki za poradnik Zrobiłem tak jak opisałeś i komunikacja z avr działa ( miałem przez chwile kilka error'ow, ale to dlatego, bo brakło tego: using System.Net; ) |
Autor: | RafPe [ 26 paź 2014, o 09:00 ] |
Tytuł: | Re: Visual C# -- Komunikacja UDP - Wysylanie - Czesc I |
programek napisał(a): Dzięki za poradnik Zrobiłem tak jak opisałeś i komunikacja z avr działa ( miałem przez chwile kilka error'ow, ale to dlatego, bo brakło tego: using System.Net; ) To bardzo sie ciesze , ze tak od reki Ci wyszlo! Jak dobrze pojdzie dzisiaj napisze poradniczek o pierwszym odbieraniu to wtedy bedziesz miec komplet Sent from my iPhone using Tapatalk |
Autor: | lukas_ [ 26 paź 2014, o 09:20 ] |
Tytuł: | Re: Visual C# -- Komunikacja UDP - Wysylanie - Czesc I |
Dzięki RafPe! Mi też się to przyda i czekam z niecierpliwością na więcej:) |
Autor: | eMCe2 [ 26 paź 2014, o 09:46 ] |
Tytuł: | Re: Visual C# -- Komunikacja UDP - Wysylanie - Czesc I |
No wlasnie odbireanie sie przyda bo wysylanie to juz kiedys rozpracowalem na podstawie informacji z sieci ale zeby odbierac asynchronicznie to chetnie podpatrze A czy sie przyda to chyba pytanie retoryczne wszystko sie przyda gdzie mozna sie czegos nauczyc ja czekam na wiecej... Duuuzo wiecej... Chetnie wejde w c# jak ktos bedzie prowadzil za reke... Tak samo sie w c# super parsuje dane... Mozna by to polaczyc z odbiorem po udp a wtedy zrobienie apki do sterowania po LANie to juz powinien byc pikus |
Autor: | RafPe [ 26 paź 2014, o 09:49 ] |
Tytuł: | Re: Visual C# -- Komunikacja UDP - Wysylanie - Czesc I |
eMCe2 napisał(a): Tak samo sie w c# super parsuje dane... Mozna by to polaczyc z odbiorem po udp a wtedy zrobienie apki do sterowania po LANie to juz powinien byc pikus Tu masz ogromna racje Ostatnio wlasnie robilem apke do domu do obslugi temperatury / sensorow swiatla etc i wyszla bajecznie. Wszystko po UDP. Teraz mam przerwe , bo czekam na nowy laminat zeby je dokonczyc wiec pewnie dopisze reszte poradnikow |
Autor: | MirkoT [ 26 paź 2014, o 10:41 ] |
Tytuł: | Re: Visual C# -- Komunikacja UDP - Wysylanie - Czesc I |
RafPe napisał(a): eMCe2 napisał(a): Tak samo sie w c# super parsuje dane... Mozna by to polaczyc z odbiorem po udp a wtedy zrobienie apki do sterowania po LANie to juz powinien byc pikus Tu masz ogromna racje Ostatnio wlasnie robilem apke do domu do obslugi temperatury / sensorow swiatla etc i wyszla bajecznie. Wszystko po UDP. Teraz mam przerwe , bo czekam na nowy laminat zeby je dokonczyc wiec pewnie dopisze reszte poradnikow No właśnie przed chwilą czytałem o Twoich problemach z laminatem Z przymrużeniem oka można powiedzieć że się cieszę bo dzięki temu "wysmażyłeś" taki super poradnik i będą dalsze części Jak najbardziej dobra robota i ja czekam na nasz ulubiony ciąg dalszy? |
Autor: | Likwidator [ 26 paź 2014, o 10:47 ] |
Tytuł: | Re: Visual C# -- Komunikacja UDP - Wysylanie - Czesc I |
+++++++++++++++++++++++++++++++++++++++ czekam na dalsze informacje! Edit: problem: "Error 2 A field initializer cannot reference the non-static field, method, or property 'SterownikUDP.Form1.ep' " język csharp Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. ostatnia linijka krzyczy. Program Visual C# 2010 Express |
Autor: | RafPe [ 26 paź 2014, o 10:56 ] |
Tytuł: | Re: Visual C# -- Komunikacja UDP - Wysylanie - Czesc I |
Cytuj: Z przymrużeniem oka można powiedzieć że się cieszę Mnie tez ta sytuacja pozytywnie rozbawila Fajnie , ze ktos moze z tych porad skorzystac. W tym wypadku dzis zajmiemy sie pewnie troche zmodyfikowana wersja wysylania ------------------------ [ Dodano po: 1 minucie ] Likwidator napisał(a): +++++++++++++++++++++++++++++++++++++++ czekam na dalsze informacje! Edit: problem: "Error 2 A field initializer cannot reference the non-static field, method, or property 'SterownikUDP.Form1.ep' " język csharp Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. ostatnia linijka krzyczy. Program Visual C# 2010 Express W liniach kody masz dwa miejsca , ktore musisz uzupelnic o poprawne adresy IP. Czyli :
Zalezy od Twojej sieci komputerowej |
Autor: | majster [ 26 paź 2014, o 12:27 ] |
Tytuł: | Re: Visual C# -- Komunikacja UDP - Wysylanie - Czesc I |
RafPe kurka nie ma mnie przykompie ale jak tylko zasiade to przeczytam calosc. Dobrze wiesz ze mnie sie przydadza poradniki C# no nie tylko mi ale dzieki i prosze o jeszcze Namazane ze smarta. |
Autor: | RafPe [ 26 paź 2014, o 12:55 ] |
Tytuł: | Re: Visual C# -- Komunikacja UDP - Wysylanie - Czesc I |
majster napisał(a): Dobrze wiesz ze mnie sie przydadza poradniki C# Majster dajesz znaka i robimy sesje na skaJpie a Ty tez dobrze wiesz , ze mnie sie przyda kazda wiedza w zakresie elektroniki jak i lutowania wiec mozemy sie powymieniac |
Autor: | JanuszT [ 26 paź 2014, o 13:54 ] |
Tytuł: | Re: Visual C# -- Komunikacja UDP - Wysylanie - Czesc I |
Witam Świetny poradnik. Nie ma wątpliwości co do przydatności (kurde, no prawie wierszyk ). Bardzo dziękuję i stanowczo poproszę o ciąg dalszy. Pozdrawiam |
Autor: | Krauser [ 26 paź 2014, o 18:20 ] |
Tytuł: | Re: Visual C# -- Komunikacja UDP - Wysylanie - Czesc I |
Wielkie dzięki. Zabieram się za testy. |
Autor: | Rafał555 [ 15 sty 2016, o 21:18 ] |
Tytuł: | Re: Visual C# -- Komunikacja UDP - Wysylanie - Czesc I |
Działa świetnie. Lecę dalej |
Autor: | dziabi3 [ 25 paź 2016, o 00:13 ] |
Tytuł: | Re: Visual C# -- Komunikacja UDP - Wysylanie - Czesc I |
Mnie interesuje tylko jedno , w jakim cel tworzysz IPEndPoint nadawcy? język csharp Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Wymuszasz port z którego będzie nadawana wiadomość ? |
Autor: | RafPe [ 25 paź 2016, o 20:36 ] |
Tytuł: | Re: Visual C# -- Komunikacja UDP - Wysylanie - Czesc I |
dziabi3 napisał(a): Mnie interesuje tylko jedno , w jakim cel tworzysz IPEndPoint nadawcy? język csharp Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Wymuszasz port z którego będzie nadawana wiadomość ? Tak - moglbys to zmienic np na język csharp Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. lub po prostu uzyc UdpClient. Jako , ze dosc dawno kiedy pisalem ten poradnik mysle , ze to bylo bardziej w celach szkoleniowych |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |