Exemple #1
0
 private void StartSend(ClientSocketAsyncEventArgs clientSocketAsyncEventArgs)
 {
     clientSocketAsyncEventArgs.IOEvent.WaitOne();
     clientSocketAsyncEventArgs.Status = SocketStatus.Sending;
     if (clientSocketAsyncEventArgs.SendBytesRemainingCount <= this.Settings.BufferSize)
     {
         clientSocketAsyncEventArgs.SetBuffer(clientSocketAsyncEventArgs.BufferOffsetSend, clientSocketAsyncEventArgs.SendBytesRemainingCount);
         Buffer.BlockCopy(clientSocketAsyncEventArgs.DataToSend, clientSocketAsyncEventArgs.BytesSentAlreadyCount, clientSocketAsyncEventArgs.Buffer, clientSocketAsyncEventArgs.BufferOffsetSend, clientSocketAsyncEventArgs.SendBytesRemainingCount);
     }
     else
     {
         clientSocketAsyncEventArgs.SetBuffer(clientSocketAsyncEventArgs.BufferOffsetSend, this.Settings.BufferSize);
         Buffer.BlockCopy(clientSocketAsyncEventArgs.DataToSend, clientSocketAsyncEventArgs.BytesSentAlreadyCount, clientSocketAsyncEventArgs.Buffer, clientSocketAsyncEventArgs.BufferOffsetSend, this.Settings.BufferSize);
     }
     if (!clientSocketAsyncEventArgs.AcceptSocket.Connected || clientSocketAsyncEventArgs.IsClosed)
     {
         clientSocketAsyncEventArgs.Status = SocketStatus.Idle;
         clientSocketAsyncEventArgs.IOEvent.Set();
         return;
     }
     bool willRaiseEvent = clientSocketAsyncEventArgs.AcceptSocket.SendAsync(clientSocketAsyncEventArgs);
     if (!willRaiseEvent)
     {
         ProcessSend(clientSocketAsyncEventArgs);
     }
 }
Exemple #2
0
        private void StartReceive(ClientSocketAsyncEventArgs clientSocketAsyncEventArgs)
        {
            if (clientSocketAsyncEventArgs.Status == SocketStatus.Idle)
            {
                clientSocketAsyncEventArgs.IOEvent.WaitOne();
                clientSocketAsyncEventArgs.Status = SocketStatus.Receiving;
                clientSocketAsyncEventArgs.SetBuffer(clientSocketAsyncEventArgs.BufferOffsetReceive,
                    this.Settings.BufferSize);
                if (!clientSocketAsyncEventArgs.AcceptSocket.Connected || clientSocketAsyncEventArgs.IsClosed)
                {
                    clientSocketAsyncEventArgs.Status = SocketStatus.Idle;
                    clientSocketAsyncEventArgs.IOEvent.Set();
                    return;
                }

                bool willRaiseEvent = clientSocketAsyncEventArgs.AcceptSocket.ReceiveAsync(clientSocketAsyncEventArgs);
                if (!willRaiseEvent)
                {
                    ProcessReceive(clientSocketAsyncEventArgs);
                }
            }
        }