コード例 #1
0
        void StartSend()
        {
            lock (m_lockQueue)
            {
                // 데이터만 가져오고 큐에서 제거하진 않는다.
                CustomPacket packet = m_sendQueue.Peek();

                // 헤더에 패킷 사이즈 기록
                packet.RecordSizeToHeader();

                // 보낼 패킷 사이즈만큼 버퍼 크기 설정
                m_sendArgs.SetBuffer(m_sendArgs.Offset, packet.m_position);

                // 패킷 내용을 SocketAsyncEventArgs 버퍼에 복사
                Array.Copy(packet.m_buffer, 0, m_sendArgs.Buffer, m_sendArgs.Offset, packet.m_position);

                // 비동기 전송 시작
                bool pending = m_sock.SendAsync(m_sendArgs);
                if (!pending)
                {
                    OnProcessSend(m_sendArgs);
                }
            }
        }