예제 #1
0
파일: Udp.cs 프로젝트: midgithub/EZServer
        void BeginResponseCallBack(IAsyncResult ar)
        {
            UdpPeer peer = (UdpPeer)ar.AsyncState;

            int rev = peer.serverSocket.EndReceiveFrom(ar, ref peer.remoteEndPoint);

            if (rev > 0)
            {
                if (ResponseCallback != null)
                {
                    byte[] result = ResponseCallback(peer.remoteEndPoint, peer.buffer);

                    if (result != null && result.Length > 0)
                    {
                        SendTo(peer.remoteEndPoint, result);
                    }

                    peer.ResetBuffer();
                }

                socketHandler.BeginReceiveFrom
                    (peer.buffer, 0, bufferSize, SocketFlags.None,
                    ref peer.remoteEndPoint, new AsyncCallback(BeginResponseCallBack), peer);
            }
        }
예제 #2
0
        void BeginResponseCallBack(IAsyncResult ar)
        {
            UdpPeer peer = (UdpPeer)ar.AsyncState;

            int rev = peer.serverSocket.EndReceiveFrom(ar, ref peer.remoteEndPoint);

            if (rev > 0)
            {
                if (ResponseCallback != null)
                {
                    ThreadBridge.Invoke(() => { ResponseCallback(peer.remoteEndPoint, peer.buffer); });
                }

                peer.ResetBuffer();

                socketHandler.BeginReceiveFrom
                    (peer.buffer, 0, bufferSize, SocketFlags.None,
                    ref peer.remoteEndPoint, new AsyncCallback(BeginResponseCallBack), peer);
            }
        }