Esempio n. 1
0
        public bool SendEntity(SendPacket entity, ISendDelivery delivery)
        {
            int    cursor = 0;
            int    total  = entity.GetLength();
            Stream stream = entity.GetInputStream();
            int    count;

            try
            {
                while ((count = stream.Read(mOutBuffer, 0, mBufferSize)) != -1)
                {
                    // Write
                    mSocket.Send(mOutBuffer, 0, count, SocketFlags.None);
                    cursor += count;

                    // Post progress
                    delivery.PostSendProgress(entity, total, cursor);
                }
                return(true);
            }
            catch (IOException e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                CloseStream(stream);
            }
            return(false);
        }
Esempio n. 2
0
        /// <summary>
        /// Init send data head info
        /// </summary>
        private void SendHead()
        {
            // Init Head
            int size;

            mTotal = mPacket.GetLength();
            if (mTotal <= 0)
            {
                size = 0;
            }
            else
            {
                // Type
                Buffer[0] = mPacket.GetPacketType();

                // Length
                byte[] lenBytes = BitConverter.GetBytes(mTotal);
                lenBytes.CopyTo(Buffer, 1);

                // Info
                short  infoLen      = mPacket.ReadInfo(Buffer, HeadSize);
                byte[] infoLenBytes = BitConverter.GetBytes(infoLen);
                infoLenBytes.CopyTo(Buffer, HeadSize - 2);

                size = HeadSize + infoLen;
            }
            // Check packet size
            if (size > 0)
            {
                // Init Size
                mCursor   = 0;
                mProgress = 0;

                // Post Start
                NotifyProgress();

                // Init the packet
                mPacket.StartPacket();

                // Send Head
                SendAsync(0, size);
            }
            else
            {
                // Send next
                mPacket = null;
                SendNext();
            }
        }
Esempio n. 3
0
        public bool SendHead(SendPacket entity)
        {
            int length = entity.GetLength();

            if (length <= 0)
            {
                return(false);
            }
            try
            {
                byte[] lenBytes = BitConverter.GetBytes((length));
                // Send Type
                mSocket.Send(new byte[] { (byte)entity.GetType() }, SocketFlags.None);
                // Send Length
                mSocket.Send(lenBytes, 0, 4, SocketFlags.None);
                return(true);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return(false);
            }
        }