public void ClientDisposeDisconnectTest()
        {
            IPEndPoint ep = new IPEndPoint(IPAddress.Loopback, 4296);

            bool serverConnected    = false;
            bool serverDisconnected = false;
            bool clientDisconnected = false;

            using (ThreadLimitedUdpConnectionListener listener = this.CreateListener(2, new IPEndPoint(IPAddress.Any, 4296), new TestLogger()))
                using (UdpConnection connection = this.CreateConnection(ep, new TestLogger()))
                {
                    listener.NewConnection += (evt) =>
                    {
                        serverConnected              = true;
                        evt.Connection.Disconnected += (o, et) => serverDisconnected = true;
                    };

                    connection.Disconnected += (o, et) => clientDisconnected = true;

                    listener.Start();
                    connection.Connect();

                    Thread.Sleep(100); // Gotta wait for the server to set up the events.
                    connection.Dispose();

                    Thread.Sleep(100);

                    Assert.IsTrue(serverConnected);
                    Assert.IsTrue(serverDisconnected);
                    Assert.IsFalse(clientDisconnected);
                }
        }
예제 #2
0
        private void InitUdp(int port)
        {
            if (_udpConnection != null)
            {
                _udpConnection.SearchResult -= UdpConnectionSearchResult;
                _udpConnection.Dispose();
                _udpConnection = null;
            }

            if (port > 0)
            {
                try
                {
                    _udpConnection = new UdpConnection(port, Settings.NetworkInterface);
                    _udpConnection.SearchResult += UdpConnectionSearchResult;
                }
                catch
                {
                    Logger.Error("Unable to initialize udp port {0}", port);
                }
            }
        }