Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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: C# UDP - Chyba: Odkaz není nastaven na instanci objektu

Aktivity
Avatar
Tomáš N.
Člen
Avatar
Tomáš N.:27.8.2015 21:09

Zdravím, chyba nastane v SendTo

s.SendTo(sendbuf, ep); // Chyba: Odkaz není nastaven na instanci objektu

Tady mám server:

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

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

    private void Start()
    {
        Socket 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();
        }
    }
}

Předem děkuji za rady :)

 
Odpovědět
27.8.2015 21:09
Avatar
Odpovídá na Tomáš N.
Petr Štechmüller:27.8.2015 21:15

Ahoj, v metodě start v serveru vytvaris novy socket, který bude viditelný pouze v teto metodě, pak se zruší.
Řešení: smaz název třídy Socket

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

       broadcast = IPAddress.Parse("192.168.0.104");
   }
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
27.8.2015 21:15
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Tomáš N.
Člen
Avatar
Odpovídá na Petr Štechmüller
Tomáš N.:27.8.2015 21:33

Děkuji moc za radu a rychlost ;)

 
Nahoru Odpovědět
27.8.2015 21:33
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 3 zpráv z 3.