Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – Pasívne vzdialená plocha

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
bartes007
Tvůrce
Avatar
Odpovedá na Shift
bartes007:11.7.2012 8:44

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

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 :/

Odpovedať
Neaktivní uživatelský účet
Avatar
bartes007
Tvůrce
Avatar
Odpovedá 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:)

Avatar
Odpovedá na bartes007
Neaktivní uživatel:20.10.2012 8:29

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

Odpovedať
Neaktivní uživatelský účet
Avatar
Odpovedá na bartes007
Neaktivní uživatel:23.10.2012 20:53

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

Odpovedať
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na bartes007
David Hartinger:23.10.2012 20:54

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

Odpovedať
New kid back on the block with a R.I.P
Avatar
Odpovedať
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....;)

Avatar
Odpovedať
Neaktivní uživatelský účet
Avatar
bartes007
Tvůrce
Avatar
Odpovedá 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);

            }


        }
    }
}
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 27.