NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
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.