예제 #1
0
        public override bool Decode(byte[] Data)
        {
            StringBuilder sb;
            int           i;
            ushort        CodeErreur;

            if (Data.Length < 4)
            {
                return(false);
            }
            if (Data[0] != 0 || Data[1] != (byte)TypePaquet.ERROR)
            {
                return(false);
            }
            CodeErreur = BitConverter.ToUInt16(Data, 2);
            if (CodeErreur > 7)
            {
                return(false);
            }
            i  = 4;
            sb = new StringBuilder();
            while (i < Data.Length && Data[i] != 0)
            {
                sb.Append((char)Data[i]);
                i++;
            }
            if (sb.ToString() == "")
            {
                return(false);
            }
            m_CodeErreur    = (CodeErreur)CodeErreur;
            m_MessageErreur = sb.ToString();
            Type            = TypePaquet.ERROR;
            return(true);
        }
예제 #2
0
        public void SendError(CodeErreur ce)
        {
            byte[] tamponErreur = new byte[516];
            tamponErreur[0] = (byte)((ushort)CodeOP.ERROR >> 8);
            tamponErreur[1] = (byte)((ushort)CodeOP.ERROR & 0xFF);
            tamponErreur[2] = (byte)((ushort)ce >> 8);
            tamponErreur[3] = (byte)((ushort)ce & 0xFF);
            tamponErreur[4] = 0x00;

            m_socket.SendTo(tamponErreur, m_PointDistant);
            m_socket.Close();
        }
예제 #3
0
파일: TFTP.cs 프로젝트: pascal-canuel/TFTP
        public void SendError(CodeErreur codeErreur, string MsgErreur)
        {
            byte[] tamponErreur = new byte[516];
            tamponErreur[0] = (byte)((ushort)CodeOP.ERROR >> 8);
            tamponErreur[1] = (byte)((ushort)CodeOP.ERROR & 0xFF);
            tamponErreur[2] = (byte)((ushort)codeErreur >> 8);
            tamponErreur[3] = (byte)((ushort)codeErreur & 0xFF);
            tamponErreur[4] = 0x00;

            Encoding.ASCII.GetBytes(MsgErreur, 0, MsgErreur.Length, tamponErreur, 4);

            tamponErreur[4 + MsgErreur.Length] = 0x00;

            m_socket.SendTo(tamponErreur, 4 + MsgErreur.Length + 1, SocketFlags.None, m_PointDistant);

            m_socket.Close();
        }
예제 #4
0
 public ErrorPaquet(CodeErreur CodeErreur, string MessageErreur) : base(TypePaquet.ERROR)
 {
     m_CodeErreur    = CodeErreur;
     m_MessageErreur = MessageErreur;
 }