Example #1
0
        public UniNetObject GetAcceptedUniObject(UniNetObject AcceptObject, ref UniNetObject ClientObject)
        {
            var Args = AcceptObject.innerObject as SocketAsyncEventArgs;

            ClientObject.ConnectionType = 0x20;//async accept
            ClientObject.LastOperation  = UniNetOperation.Receive;
            var clientArgs = (ClientObject.innerObject as SocketAsyncEventArgs);

            ClientObject.SetRemoteEndPoint((IPEndPoint)Args.RemoteEndPoint);
            clientArgs.AcceptSocket   = Args.AcceptSocket;
            clientArgs.RemoteEndPoint = Args.RemoteEndPoint;
            if (Args.BytesTransferred != 0)
            {
                Array.Copy(Args.Buffer, ClientObject.Buffer, Args.BytesTransferred);
                ClientObject.BufferLength = Args.BytesTransferred;
            }
            return(ClientObject);
        }
Example #2
0
        public bool AcceptAsync(UniNetObject ServerObject, UniNetObject uniObject)
        {
            uniObject.ConnectionType = 0x20;//async accept
            uniObject.LastOperation  = UniNetOperation.Receive;
            IPEndPoint remote = new IPEndPoint(IPAddress.Any, 0);

            uniObject.SetRemoteEndPoint(remote);
            var socket = ServerObject.stateObject as Socket;
            var Args   = uniObject.innerObject as SocketAsyncEventArgs;

            Args.SetBuffer(new byte[2048], 0, 2048);
            Args.RemoteEndPoint = remote;
            Args.AcceptSocket   = socket;
            Args.Completed     += new EventHandler <SocketAsyncEventArgs>((object sender, SocketAsyncEventArgs args) =>
            {
                uniObject.ObjectError = (NetCoreError)(int)args.SocketError;
            });
            return(socket.ReceiveFromAsync(Args));
            //return false;
        }