Ejemplo n.º 1
0
        private void MyReceiveCallback(IAsyncResult result)
        {
            try
            {
                if (client != null)
                {
                    IPEndPoint ip = new IPEndPoint(IPAddress.Any, 0);

                    UdpClientEventArgs clientArgs = new UdpClientEventArgs();
                    clientArgs.Data     = client.EndReceive(result, ref ip);
                    clientArgs.Size     = clientArgs.Data.Length;
                    clientArgs.endPoint = ip;
                    OnReceiveData(clientArgs);
                }

                if (!stop)
                {
                    Receive(); // <-- this will be our loop
                }
            }
            catch (Exception MyReceiveCallbackExc)
            {
                // Удаленный хост принудительно разорвал существующее подключение
                if (MyReceiveCallbackExc.HResult == -2147467259)
                {
                    LogError.MessageError(MyReceiveCallbackExc, null, "UDP соединение", false);
                    return;
                }
                StopReceiving();
                LogError.MessageError(MyReceiveCallbackExc, null, "UDP соединение", true);
            }
        }
Ejemplo n.º 2
0
        protected virtual void OnReceiveData(UdpClientEventArgs e)
        {
            EventHandler <UdpClientEventArgs> handler = ReceiveData;

            if (handler != null)
            {
                handler(this, e);
            }
        }