NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Pasivní vzdálená plocha

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
bartes007
Tvůrce
Avatar
Odpovídá na Shift
bartes007:11.7.2012 8:44

Díky za info a za otestování tímto způsobem...

 
Odpovědět
11.7.2012 8:44
Avatar
Neaktivní uživatel:19.10.2012 20:21

[me|]514[/me|­],zajímalo by mě jak se dá připojit k vzdálenému počítači přes C#... Třeba zaslat zprávu v MessageBox atp. Zkoušel jsem Googlit ale nic :/

Odpovědět
19.10.2012 20:21
Neaktivní uživatelský účet
Avatar
bartes007
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
bartes007:19.10.2012 21:45

Ahoj, máš docela jednoduchou otázku, ale odpověď jednoduchá nebude. V podstatě se ti ale nabízejí dva způsoby řešení.

  1. C# remoting - stačí pár řádků a kodu a můžeš komunikovat mezi PC během pár minut. Je ale trochu náročnější na pochopení, to je jenom můj osobní názor:) Není to úplně přesné, co ti teď napíšu, ale představ si, že tvůj jeden projekt obsahuje dvě třídy A a B. Třída A bude mít metodu odeslat zprávu tj. A.OdeslatZpra­vu(string message). Druhá třída, tj. B bude mít metodu která zprávu zobrazí, tedy B.Zobraz(strin message). V hlavní metodě Main si vytvoříš instance obou tříd a komunikuješ si mezi nima "klasicky". Teď si představ, že ty třídy roztrhneš. Jednu dáš na server B a druhou dáš na klientský PC A a v obou implemetuješ c# remoting. Ten ti zajistí, že budeš komunikovat mezi těmito třídami fyzicky na různých PC, jako by byly v jednom programu na jednom PC. Je to velmi pohodlné, nemusíš se starat o síťovou komunikaci, to vše je "automaticky" zajištěno. Je to vzdálené vyvolávání akcí.
  2. způsob č. 2 je co se týče kodu upsanější. Musíš si vybrat, jaký protokol si vybereš pro komunikaci TCP/UDP. Jsou to protokoly pro síťovou komunikaci. Na internetu je návodů kupa, zkus se třeba podívat po nějakém příkladu na Chat aplikaci, dá se to z nich docela dobře pochopit - nejsou složité.

Pokusím se ti na ten c# remoting udělat tutorial i s příkladem. Ale připomeň se v pondělí, protože víkend začíná a to mívám výpadky paměti:)

 
Odpovědět
+1
19.10.2012 21:45
Avatar
Odpovídá na bartes007
Neaktivní uživatel:20.10.2012 8:29

OK, tak dík :)
Těším se na článek ;)

Odpovědět
20.10.2012 8:29
Neaktivní uživatelský účet
Avatar
Odpovídá na bartes007
Neaktivní uživatel:23.10.2012 20:53

bartes007 úúúúž jééé úúúútééérýýý :D

Odpovědět
23.10.2012 20:53
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na bartes007
David Hartinger:23.10.2012 20:54

Teď se ho už nezbavíš, věř mi :D

Odpovědět
+2
23.10.2012 20:54
New kid back on the block with a R.I.P
Avatar
Odpovědět
23.10.2012 20:57
Neaktivní uživatelský účet
Avatar
bartes007
Tvůrce
Avatar
bartes007:23.10.2012 22:17

Neaktivní uživatel Ahoj, díky že jsi se připomněl. Předpokládám zítra, tj. středa, že začnu tvořit návod, jak na to. Poprosím tě o trpělivost....;)

 
Odpovědět
23.10.2012 22:17
Avatar
Odpovědět
24.10.2012 19:53
Neaktivní uživatelský účet
Avatar
bartes007
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
bartes007:28.10.2012 15:05

Ahoj,
udělal jsem ti takový malý příklad na C# remoting. Spustíš si serverovou část aplikace a potom klientskou část. V komentářích je drobný popis. Nutno si ale přidat do projektu reference na .dll ShareObject a System.Runtime­.Remoting v klientské a serverové části aplikace.

V klientu zapisuješ text do konzole a server je vypisuje. Hodně jsem vycházel z článku http://blog.vyvojar.cz/…emoting.aspx tak se tam koukni pro inspiraci.

using System;
using System.Collections.Generic;
using System.Text;


namespace ShareObject
{
    public class SdilenyObjekt: MarshalByRefObject
    {
        //toto je společný prostor pro oběaplikace, přes tuto třídu mezi sebou komunikuji
        //proto ji musí klient i server implementovat

        //jediná společná metoda, příjme řetězec a vypíše
        public void NastavHlasku(string str){
            Console.WriteLine(str);
        }




    }
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using ShareObject;

namespace Server
{
    class Program
    {
        static void Main(string[] args)
        {
            // Vytvoření prázdné instance komunikačního kanálu
            // kanály mohou být TCP, HTTP, IPC
            // číslo 2222 znamená, po jakém portu bude probíhat komunikace,tedy port 2222
            TcpChannel tcpChannel = new TcpChannel(2222);
            // Jeho zaregistrování
            ChannelServices.RegisterChannel(tcpChannel, false);
            //vytvoření instance
            SdilenyObjekt sdileny = new SdilenyObjekt();
            //a následně ho nasdílíš pod názvem RemoteObject.rem
            ObjRef oSdileny = RemotingServices.Marshal(sdileny, "RemoteObject.rem");

            Console.WriteLine("hlasky: ");

                while (true)
                {
                    System.Threading.Thread.Sleep(1000);
                }

        }
    }
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using ShareObject;

namespace Klient
{
    class Program
    {
        static void Main(string[] args)
        {
            TcpChannel tcpChannel = new TcpChannel();

            ChannelServices.RegisterChannel(tcpChannel, false);
            // žádost o instanci která byla vytvořena na serverové části
            // "tcp://localhost:2222/RemoteObject.rem" => je nabízena na adrese localhost(127.0.0.1) port 2222 a pod názvem RemoteObject.rem
            SdilenyObjekt oSdileny = (SdilenyObjekt)Activator.GetObject(typeof(SdilenyObjekt), "tcp://localhost:2222/RemoteObject.rem");

            string pom;
            while (true)
            {
                Console.Write("Zadej text: ");
                pom = Console.ReadLine().ToString();
                oSdileny.NastavHlasku(pom);

            }


        }
    }
}
 
Odpovědět
28.10.2012 15:05
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 10 zpráv z 27.