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); } } }