Exemplo n.º 1
0
        public void Sending(SocketAsyncEventArgs e)
        {
            ///여기 다시 보기
            ///
            if (send_eventargs.BytesTransferred <= 0 || send_eventargs.SocketError != SocketError.Success)
            {
                return;
            }

            lock (queue_locker)
            {
                int size = sending_queue.Peek().position;
                if (e.BytesTransferred != size)
                {
                    e.SetBuffer(e.BytesTransferred, size - e.BytesTransferred);
                    bool pending = socket.SendAsync(e);
                    if (!pending)
                    {
                        Sending(send_eventargs);
                    }

                    return;
                }

                Packet packet = sending_queue.Dequeue();
                packet.delete();
            }
            if (this.sending_queue.Count > 0)
            {
                send_start();
            }
        }