Avatar
Mediel
Redaktor
Avatar
Mediel:

Cabas kluci, muzete mi sem nekdo prosim podrobne rozepsat komunikaci po TCP/IP. Jak serverovou cast s vlakny pro kazdeho pripojeneho uzivatele, tak klienta s jednoduchym odeslanim napriklad loginu?
Brouzdal jsem trochu na netu, ale moc tem kodum nerozumim. Sice neco delaji, ale kdyz nevim jak to funguje, tak mi to je k nicemu. Tedy vyresilo by to problem ted, ale do budoucna urcite ne... Muzete mi prosim nekdo pomoc? Nebo na to napsat tutorial? Ale prosim podrobne :)

Dekuji

Odpovědět 5.11.2012 15:51
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
Mediel
Redaktor
Avatar
Mediel:

Nikdo? Nevadí. :)

Nahoru Odpovědět 6.11.2012 13:07
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Mediel
David Čápka:

Něco takového se tu řešilo (viz komentáře pod programem): http://www.itnetwork.cz/…alena-plocha

Nahoru Odpovědět 6.11.2012 13:27
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Mediel
Redaktor
Avatar
Mediel:

Rozumim, jen... Dobre, nekde se to naucim, snad to pochopim dobre a udelam sem na to manual. Urcite nejsem jediny, kdo nerozumi TCP/IP komunikaci :)

Nahoru Odpovědět 6.11.2012 13:38
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
Kit
Redaktor
Avatar
Odpovídá na Mediel
Kit:

Není to na jeden koment a článek se mi o tom tady psát nechce. Bylo by lepší, kdyby sis na to našel nějakou knížku. Nevím ani, do jaké hloubky chceš jít, protože v aplikacích se s tím zachází jako se souborem.

Nahoru Odpovědět 6.11.2012 14:00
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Mediel
Redaktor
Avatar
Mediel:

No mám to rozpracované takto:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Threading;
using System.Net;

namespace Core
{
    public class Communication
    {
        TcpListener server = null;
        Int32 port = 9999;
        IPAddress localAddr = IPAddress.Parse("127.0.0.1");

        /// <summary>
        /// Vytvoří server, který bude poslouchat na portu <c>port</c>.
        /// </summary>
        /// <param name="port">Číslo portu.</param>
        public Communication(int port)
        {
            server = new TcpListener(localAddr, port);
        }

        /// <summary>
        /// Zahájí naslouchání.
        /// </summary>
        public void Start()
        {
            server.Start();
        }

        /// <summary>
        /// Ukončí naslouchání
        /// </summary>
        public void Stop()
        {
            server.Stop();
        }

        /// <summary>
        /// Událost vyvolaná v případě, že se připojí nějaké čidlo.
        /// </summary>
        public event EventHandler<SensorConnectedEventArgs> SensorConnected;

        /// <summary>
        /// Událost vyvolaná v případě, že přijdou nějaká data ze sítě (od čidla).
        /// </summary>
        public event EventHandler<DataReceivedEventArgs> DataReceived;
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Core
{
    /// <summary>
    /// Parametr události "připojení senzoru". Obsahuje ID senzoru, který se připojil.
    /// </summary>
    public class SensorConnectedEventArgs : EventArgs
    {
        public byte SensorID { get; private set; }

        public SensorConnectedEventArgs(byte sensorID)
        {
            SensorID = sensorID;
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Core
{
    /// <summary>
    /// Parametr události "připojení senzoru". Obsahuje zprávu, kterou čidlo odeslalo.
    /// </summary>
    public class DataReceivedEventArgs : EventArgs
    {
        public DataMessage Message { get; private set; }

        public DataReceivedEventArgs(DataMessage message)
        {
            Message = message;
        }
    }
}

víceméně stačí, že se připojí cca 5 zařízení. A každou sec odešlou nějaká data. A potřebuji tato data přijmout a uložit do DB.

Nahoru Odpovědět 6.11.2012 14:17
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
Kit
Redaktor
Avatar
Odpovídá na Mediel
Kit:

Pokud je ta databáze síťová, tak s ní musíš navázat druhé spojení, tentokrát jako klient. Souborovou DB stačí jen otevřít správným ovladačem.

Nahoru Odpovědět 6.11.2012 14:34
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Mediel
Redaktor
Avatar
Mediel:

Db neni sitova... DB bude pouze pristupna localu. Nevedel jsem, ze TCP/IP je tak slozite.

Nahoru Odpovědět 6.11.2012 14:37
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
Kit
Redaktor
Avatar
Odpovídá na Mediel
Kit:

Spousta uživatelů používá síťovou databázi z localu, např. MySQL nebo Redis. Některé se dají otevřít dvěma způsoby: Buď přes TCP, anebo přes socket. Obvykle však stačí použít správný ovladač, ten si vhodnou metodu vybere sám.

Nahoru Odpovědět 6.11.2012 16:18
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Mediel
Redaktor
Avatar
Mediel:

Tak uz to mam... Je to teda masakr motorovym kodem :D

Nahoru Odpovědět  +1 6.11.2012 23:12
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
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 10.