Diskuze: C# UDP

C# .NET .NET (C# a Visual Basic) C# UDP American English version English version

Avatar
Dortík
Člen
Avatar
Dortík:

Zdravím, pořeboval bych poradit s tím aby nejen server odesílal ale i přijmal a client aby i odesílal ne jen přijmal.

Zde je server:

public partial class Form1 : Form
{
    Socket s;
    IPAddress broadcast;

    public Form1()
    {
        InitializeComponent();
        Start();
    }

    private void Start()
    {
        s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,
        ProtocolType.Udp);

        broadcast = IPAddress.Parse("192.168.0.104");
    }

    private void Odeslat(string Event)
    {
        byte[] sendbuf = Encoding.ASCII.GetBytes(Event);
        IPEndPoint ep = new IPEndPoint(broadcast, 25565);

        s.SendTo(sendbuf, ep);
    }

    private void btn_Open_Click(object sender, EventArgs e)
    {
        Odeslat("Open");
    }
}

No a tady client:

public partial class Form1 : Form
{
    int listenPort = 25565;

    public Form1()
    {
        InitializeComponent();
        Start();
    }

    private void Start()
    {
        bool done = false;

        UdpClient listener = new UdpClient(listenPort);
        IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);

        try
        {
            while (!done)
            {
                byte[] bytes = listener.Receive(ref groupEP);

                string receive = Encoding.ASCII.GetString(bytes, 0, bytes.Length);
                Console.WriteLine(receive);
            }

        }
        catch (Exception e)
        {
            Thread.Sleep(5000);
            Console.WriteLine(e.ToString());
            Start();
        }
    }
}
 
Odpovědět 1.9.2015 15:43
Avatar
vodslon
Člen
Avatar
Odpovídá na Dortík
vodslon:

Dá se to řešit spoustou způsobů, ale já bych to udělal bud asynchroně nebo přes další vlákno. Proč používáš UDP ze zvědavosti?

 
Nahoru Odpovědět 2.9.2015 11:16
Avatar
Dortík
Člen
Avatar
Odpovídá na vodslon
Dortík:

TCP mi nefungovalo.

 
Nahoru Odpovědět 2.9.2015 11:30
Avatar
vodslon
Člen
Avatar
Odpovídá na Dortík
vodslon:

Jako ze sítového důvodu, že máš zařízlej přístup, protože i co google ted mi potvrzuje, všichni na to používají TCP Clienta, kterej je bohatší na funkce. Chceš s tím něják konkrétně pomoc nebo si to chceš napsat sám? :)

 
Nahoru Odpovědět 2.9.2015 13:27
Avatar
Dortík
Člen
Avatar
Odpovídá na vodslon
Dortík:

Ne děkuji zkusím to teda přes to TCP.

 
Nahoru Odpovědět 2.9.2015 14:48
Avatar
vodslon
Člen
Avatar
Odpovídá na Dortík
vodslon:

v pohodě, udělej to přes sockety a type použij TCP.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 2.9.2015 14:51
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 6 zpráv z 6.