Diskuze: C# UDP - Chyba: Odkaz není nastaven na instanci objektu

C# .NET .NET (C# a Visual Basic) C# UDP - Chyba: Odkaz není nastaven na instanci objektu American English version English version

Avatar
Dortík
Člen
Avatar
Dortík:

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 Dortík
Petr Štechmüller:

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í
+1 bodů
Ř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
Dortík
Člen
Avatar
Odpovídá na Petr Štechmüller
Dortík:

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.