Example #1
0
        /// <summary>
        /// 数据接收回调函数
        /// </summary>
        /// <param name="ar"></param>
        private void ReceiveCallback(IAsyncResult ar)
        {
            UdpState udpState = ar.AsyncState as UdpState;

            if (ar.IsCompleted)
            {
                try
                {
                    var buffer = udpState.UdpClient.EndReceive(ar, ref udpState.IpEndPoint);
                    udpState.Buffer = buffer;
                    HandleDataReceived?.Invoke(this, udpState);
                }
                catch (Exception ex)
                {
                    HandleException?.Invoke(ex);
                }
                finally
                {
                    _serverDone.Set();
                    if (IsRunning && _udpServer != null)
                    {
                        Receive();
                    }
                }
            }
        }
Example #2
0
        /// <summary>
        /// 异步UdpClient UDP服务器
        /// </summary>
        /// <param name="listenPort">监听的端口</param>
        public UdpServer(int serverPort, int clientPort)
        {
            this._serverEP = new IPEndPoint(IPAddress.Any, serverPort);
            this._clientEP = new IPEndPoint(Dns.GetHostAddresses(Dns.GetHostName())[0], clientPort);

            _udpServer = new UdpClient(this._serverEP);
            _udpClient = new UdpClient();

            _udpSeverState = new UdpState()
            {
                UdpClient = _udpServer, IpEndPoint = _serverEP
            };
            _udpClientState = new UdpState()
            {
                UdpClient = _udpClient, IpEndPoint = _clientEP
            };
        }
Example #3
0
        private void SendCallback(IAsyncResult ar)
        {
            UdpState udpState = ar.AsyncState as UdpState;

            if (ar.IsCompleted)
            {
                try
                {
                    udpState.UdpClient.EndSend(ar);
                }
                catch (Exception ex)
                {
                    HandleException?.Invoke(ex);
                }
                finally
                {
                }
            }
        }