示例#1
0
        private void SendChangeCipherSpec(Session session)
        {
            int size         = 1;
            int responseSize = DTLSRecord.RECORD_OVERHEAD + size;

            byte[]     response = new byte[responseSize];
            DTLSRecord record   = new DTLSRecord
            {
                RecordType     = TRecordType.ChangeCipherSpec,
                Epoch          = session.Epoch,
                SequenceNumber = session.NextSequenceNumber(),
                Fragment       = new byte[size]
            };

            record.Fragment[0] = 1;
            if (session.Version != null)
            {
                record.Version = session.Version;
            }
            using (MemoryStream stream = new MemoryStream(response))
            {
                record.Serialise(stream);
            }
            SocketAsyncEventArgs parameters = new SocketAsyncEventArgs()
            {
                RemoteEndPoint = session.RemoteEndPoint
            };

            parameters.SetBuffer(response, 0, responseSize);
            _Socket.SendToAsync(parameters);
            session.ChangeEpoch();
        }
示例#2
0
		private void SendChangeCipherSpec(Session session)
		{
			int size = 1;
			int responseSize = DTLSRecord.RECORD_OVERHEAD + size;
			byte[] response = new byte[responseSize];
			DTLSRecord record = new DTLSRecord();
			record.RecordType = TRecordType.ChangeCipherSpec;
			record.Epoch = session.Epoch;
			record.SequenceNumber = session.NextSequenceNumber();
			record.Fragment = new byte[size];
			record.Fragment[0] = 1;
			if (session.Version != null)
				record.Version = session.Version;
			using (MemoryStream stream = new MemoryStream(response))
			{
				record.Serialise(stream);
			}
            SocketAsyncEventArgs parameters = new SocketAsyncEventArgs()
            {
                RemoteEndPoint = session.RemoteEndPoint
            };
            parameters.SetBuffer(response, 0, responseSize);
            _Socket.SendToAsync(parameters);
            session.ChangeEpoch();
		}