Exemplo n.º 1
0
        /// <summary>
        /// Receives file details.
        /// </summary>
        /// <param name="listenerState">TCP listener status.</param>
        /// <returns>Transmitted file, with installed file details.</returns>
        private TransmittedFile ReceiveFileDetails(ListenerState listenerState)
        {
            const int reservedСellSize = 8;
            const int startIndex       = 0;

            long fileDetailsLength = BitConverter.ToInt64(listenerState.Buffer
                                                          .Take(reservedСellSize).ToArray(), startIndex);

            byte[] fileDetails = listenerState.Buffer
                                 .Skip(reservedСellSize).Take((int)fileDetailsLength).ToArray();

            listenerState.NeedToReceivedBytes = BitConverter.ToInt64(listenerState.Buffer
                                                                     .Skip(reservedСellSize + fileDetails.Length).ToArray(), startIndex);

            return(new TransmittedFile(fileDetails));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Accepts connections. Starts receiving a file.
        /// </summary>
        /// <param name="asyncResult">The result of the asynchronous operation.</param>
        private void AcceptConnection(IAsyncResult asyncResult)
        {
            _allDone.Set();

            var listener = (Socket)asyncResult.AsyncState;
            var handler  = listener.EndAccept(asyncResult);

            var listenerState = new ListenerState
            {
                WorkSocket = handler
            };

            const int bufferOffset = 0;

            handler.BeginReceive(listenerState.Buffer, bufferOffset,
                                 ListenerState.BufferSize, SocketFlags.None,
                                 new AsyncCallback(EndReceive), listenerState);
        }