Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Visual Basic] Przesyłanie informacji przez internet.

12 Maj 2011 11:58 3210 15
  • Poziom 15  
    Witam.

    Przeszukałem google, oraz to forum i nie mogłem znaleźć odpowiedzi na nurtujące mnie pytanie. Może szukałem pod nie tymi hasłami co trzeba. W każdym razie nic nie znalazłem i dlatego zwracam się o pomoc do forumowiczów. Ok, ale po kolei - najpierw o co mi chodzi :P

    Piszę programy w Visual Studio, a przynajmniej zaczynam ale już coś tam na ten temat wiem :P Chcę zrobić dwa całkiem podobne ale jednak różniące się programy. Pierwszy będzie robił za "sterownik". Będzie zawierał Buttony, TextBoxy, oraz inne kontrolki. Drugi będzie robił za... ja to określę jako "serwer".

    Zadaniem pierwszego -"sterownika"- będzie po kliknięciu w jakiś button wysyłanie odpowiedniej informacji (nie wiem: cyfry, litery) do "serwera" oraz odebranie od niego wiadomości potwierdzającej (jakiegoś tekstu) i wyświetlenie jej w polu TextBox.

    A "serwer" po odebraniu informacji i wysłaniu potwierdzenia, w zależności od rodzaju informacji wykona określoną czynność na komputerze. Jak łatwo zauważyć chodzi tu o takie "zdalne sterowanie". Musze jeszcze zaznaczyć że te 2 programy te będą znajdować się na 2 osobnych komputerach. Jako połączenie między nimi chcę wykorzystać internet.

    I z tym właśnie problemem zwracam się do was szanowni forumowicze. W jaki sposób mogę wykonać takie połączenie?? Jak mam przesyłać informację pomiędzy tymi dwoma programami?? I czy w ogóle jest to możliwe?? Tak jak już pisałem na początku przegrzebałem internet i nic nie znalazłem w tym temacie, być może nie umiem szukać, lub po prostu nie wiem pod jakim hasłem.

    P.S. co do przesyłanej informacji, to nie wiem, mogą to być liczby, ze np. wysłanie cyfry 1 spowoduje ze serwer wykona to i to, a wyslanie 2 za tamto i tamto. Może być coś innego, co wy polecicie.

    Pozdrawiam i czekam na odpowiedzi.
  • Poziom 22  
    Poszukaj przykłady czatów pod VB. Są takie które realizują połączenie peer to peer i takie z serwerem.
  • Pomocny post
    Poziom 30  
    Do realizacji połączeń sieciowych używa się zwykle Winsocka.
    W wyszukiwarce użyj więc słów kluczowych "VB" i "Winsock".
    Możesz zajrzeć również do opisu kontrolki Winsock. Jej użycie jest bardzo proste.Sprowadza się do oprogramowania kilku podstawowych zdarzeń.
  • Poziom 31  
    Skoro visual studio, to ja bym zaryzykował stwierdzenie, że to jest VB.NET.
    A jeśli mam rację, to możliwości jest cała masa. Poczynając od klasycznych socketów, poprzez TcpClient/TcpListener, a na WCF kończąc.
  • Poziom 13  
    Witam. Może się przyłącze bo nie chce pisać nowego tematu. Też chciałbym się pobawić tym Winsock z tym że u mnie nie ma tej kontrolki w ToolBoxie :/ Mam Visual Studio 2010. Skąd mogę dorwać tego Winsocka??
  • Poziom 15  
    Ja znalazłem gotowy czat na stronie Microsoftu a mianowicie tu

    http://msdn.microsoft.com/en-us/library/aa478452.aspx

    Jest tam link dzięki któremu można pobrać ten czat, są tam kody źródłowe. Wszystko w VB. A podam jeszcze link do tych kodów jakby ktoś nie mógł go znaleźć :P

    http://download.microsoft.com/download/c/4/8/...081-85f2-4a2e-a121-ef5cad681313/vbSockets.exe

    Przerobiłem trochę kod klienta, bo po jego uruchomieniu od razu łączył się z adresem 127.0.0.1 ja wstawiłem pole do wpisywania adresu i Buttona do nawiązania połączenie.

    I teraz mam pewien problem. Wysłałem kuzynowi utworzony po debugowaniu plik "serwera" (nic nie zmieniałem w kodzie serwera). Kazałem odpalić. Kuzyn podał mi swoje IP, ja odpaliłem klienta, wpisałem jego IP i dałem połącz lecz wyskoczył jakiś komunikat windowsowy ze nie można nawiązać połączenie. Jeżeli wysłałem mu clienta i kazałem się połączyć z moim IP - miał to samo. Spróbowałem jeszcze z moim kolegą - to samo.

    Dodam że zarówno u mnie jak i u nich po odpaleniu serwer i klienta i wpisaniu adresu 127.0.0.1 wszystko działa pięknie - czyli na jednym komputerze ruszy. Problemy zaczynają się właśnie przy połączeniu przez internet.

    Co mam zrobić aby połączyć te programiki (serwer, klient) przez internet??

    Pozdrawiam
  • Poziom 30  
    Podałeś zbyt mało danych. Nie wiadomo czy adresy IP są publiczne. Czy po drodze do komputera odbierającego połączenia nie ma przypadkiem np. jakiegoś routera itp.
  • Poziom 15  
    Pawel2420 napisał:
    Podałeś zbyt mało danych. Nie wiadomo czy adresy IP są publiczne. Czy po drodze do komputera odbierającego połączenia nie ma przypadkiem np. jakiegoś routera itp.


    Ok więc tak, ja posiadam internet z Netii (wiec mam też zmienne IP). Co prawda mam router z modemem (jakis Asmax 1004g). Router łączy się z internetem z kolei ja w komputerze mam kartę WiFi i odbieram z niego bezprzewodowo internet. Co do kuzyna - mieszka w mieście, ma kablówkę (telefon, telewizja, internet). Po domu łączy się z nim tak samo za pomocą WiFi. A co do kolegi to ma radiówkę. Też tak myślałem że to może być wina routerów, no ale w takim razie nie będę mógł przesyłać informacji za pomocą tego Winsock-a?? Może da się w jakiś sposób nawiązać połączenie?? W końcu u mnie jakoś takie programy jak np. gg dają rade się połączyć z serwerem :P
  • Pomocny post
    Poziom 30  
    To nie jest kwestia Winsocka tylko działania sieci.
    Jeśli u siebie uruchomisz program serwera i odpowiednio skonfigurujesz router to inni użytkownicy będą mogli nawiązać połączenie.

    W przypadku takich serwisów jak gg używa się do komunikacji pośredniczącego serwera. Poszczególni użytkownicy przez niego przesyłają sobie informacje.

    W tym konkretnym przypadku kuzyn do kolegi bezpośrednio nie będzie mógł przesłać danych. Jednak poprzez Twój komputer to będzie to możliwe.
  • Poziom 15  
    Pawel2420 napisał:
    To nie jest kwestia Winsocka tylko działania sieci.
    Jeśli u siebie uruchomisz program serwera i odpowiednio skonfigurujesz router to inni użytkownicy będą mogli nawiązać połączenie.


    Rozumiem, z tym że nie za bardzo wiem jak miałbym skonfigurować ten router. Podejrzewam że będzie trzeba odblokować w nim jakąś opcję lub coś w tym stylu. Prosiłbym więc o napisanie mi co musiałbym zrobić aby działał ten Winsock. Prosiłbym po prostu napisać jakie opcje muszę w nim pozmieniać. Ja na sieci to znam się tylko tyle co podłączyć router i odpowiednio go skonfigurować :P
  • Pomocny post
    Poziom 30  
    Jeśli chcesz coś zrobić to musisz najpierw zrozumieć podstawy przesyłania danych w sieci.

    1. Dane w sieciach komputerowych przesyła się pakietami. Każdy taki pakiet poza właściwymi danymi zawiera informację o jego nadawcy i odbiorcy.
    2. W uproszczeniu router jest to urządzenie, które pośredniczy pomiędzy siecią WAN (Internetem) a lokalną siecią LAN. Otrzymuje on od Netii zewnętrzny adres IP. Jest on publiczny. Oznacza to, że każdy pakiet wysłany w Internecie mający adres odbiorcy routera dotrze do niego.
    3. Pakiet danych dotrze wyłącznie do routera ale nie do komputera gdzie masz uruchomioną aplikację serwera. Zawiera on tylko adres routera a nie komputera
    4. Możesz poinformować router co ma robić z pakietami przychodzącymi z Internetu. Opcji jest wiele. Jedną z nich jest przesyłanie wszystkich pakietów na wybrany adres IP w lokalnej sieci LAN. Inną będzie przesyłanie tylko określonych typów pakietów na jakiś adres w sieci LAN.
    5. Zapewne przez Winsock komunikujesz się protokołem TCP. Powinieneś więc ustawić w routerze przekierowanie pakietów TCP przychodzących na port ... na adres IP komputera.
    6. Sprawę trochę komplikuje dynamiczne przydzielanie adresów IP. Zarówno tego zewnętrznego jak i tych w wewnętrznej sieci LAN. Na obecnym etapie nie musisz się tym przejmować. Załóż jedynie, że adresy są stałe tylko przez pewien czas.
  • Poziom 13  
    A ja mam takie pytanko podczas gdy serwer jest wyłączony i próbuje się połączyć klientem to tego klienta zacina a potem pojawia się okienko jakieś z windowsa i pisze ze nie może połączyć się z tym adresem. Jak zrobić aby w takim przypadku na w tym polu wyświetlił się napis że nie może się połączyć a nie żeby zacinało program cały??
  • Poziom 30  
    Chyba się mylisz. Moim zdaniem nie jest to komunikat sytemu Windows tylko programu w VB lub środowiska VB związany z błędem wykonania jakieś instrukcji.
  • Poziom 22  
    Adix3 napisał:
    A ja mam takie pytanko podczas gdy serwer jest wyłączony i próbuje się połączyć klientem to tego klienta zacina a potem pojawia się okienko jakieś z windowsa i pisze ze nie może połączyć się z tym adresem. Jak zrobić aby w takim przypadku na w tym polu wyświetlił się napis że nie może się połączyć a nie żeby zacinało program cały??


    Powinieneś instrukcje dotyczące połączenia z serwerem umieścić w bloku Try..Catch..End try.
    Pozwoli to na przechwycenie wyjątku i jego obsługę.
  • Poziom 15  
    Witam po przerwie. Chciałbym się jeszcze czegoś dowiedzieć. Otóż czy istnieje jakiś inny sposób na wymianę danych przez internet który mógłbym zaimplementować do swoich programów?? Chodzi o to że niedługo zmieniam internet na radiówkę (niestety musi być radiówka). I w takim przypadku jak rozumiem nie będę mógł postawić "serwera" dla Winsocka :/

    Chodzi mi o jakiś inny sposób w którym będę mógł przesyłać informacje pomiędzy moimi dwoma programami przy czym te programy będą zainstalowane na komputerach które mają radiowy dostęp do internetu (radiówkę).

    Proszę o pomoc.
  • Poziom 13  
    Sorry ze odkopuje ale mam pewien problem po części podobny do tego o którym pisze kolega Franek k :/ Chodzi dokładnie o to że tworze w swoim domu projekt "inteligentnego domu". Pomyślałem że warto by zrobić oprogramowanie dzięki któremu mógłbym "sterować" domem zdalnie, za pomocą internetu. Nawet fajnie się składa bo jako centralną jednostkę sterującą w moim domu zamierzam użyć komputer. Po zobaczeniu tego tematu zamierzałem zrobić dwa programiki: serwer i klient opierając się na Winsock. Program oznaczony jako serwer byłby zainstalowany na komputerze sterującym domem.

    I teraz jest taki problem bo ja tez mam radiówkę :/ I serwer nie zadziała bo będzie problem z portami :/ Tak więc czy istnieją może jakieś serwery podobne do tych dla stron www, na które można wrzucić program (dla windowsa) i go odpalić?? Zgaduje że nie. Gdyby istniały takie serwery to bym sobie wrzucił tam programik z serwerem dla Winsocka i na komputerze sterującym domem zamieścił klienta, czyli ten serwer by pośredniczył w przekazywaniu informacji. Albo istnieją inne sposoby przesyłania informacji przez internet które mógłbym wykorzystać?? A co z FTP, P2P, itp??

    Pozdrawiam serdecznie