示例#1
0
    protected bool SyncSend(RCONPacket p)
    {
        byte[] Packets = p.OutputAsBytes();

        checked
        {
            if (S.Connected)
            {
                if (S.Send(Packets, 0, Packets.Length, SocketFlags.None) == Packets.Length)
                {
                    Thread.Sleep(1000);
                    int iCount = 0;

                    while (S.Available < 4 & iCount < 5)
                    {
                        Thread.Sleep(1000);
                        iCount++;
                    }

                    PacketsReceived = new byte[S.Available - 1 + 1];
                    int iIndex = 0;

                    while (S.Available > 0)
                    {
                        int iRec = S.Receive(PacketsReceived, iIndex, S.Available, SocketFlags.None);
                        iIndex += iRec;
                    }

                    return(iIndex > 0);
                }
            }
            else if (!S.Connected & m_connected)
            {
                m_connected = false;
            }

            return(false);
        }
    }