2009-09-30 4 views
5

एडोब का documentation for the AMF format वास्तव में एक संपूर्ण एएमएफ संदेश की संरचना निर्दिष्ट नहीं करता है। यह केवल व्यक्तिगत डेटा प्रकारों के प्रारूप को निर्दिष्ट करता है। मैंने पांच बार लापरवाही की बात पढ़ी है और या तो मैं पूरी तरह से याद कर रहा हूं कि वास्तविक एएमएफ संदेश में क्या होना चाहिए, या यह वहां नहीं है। क्या किसी को वास्तविक पूर्ण-संदेश संरचना के किसी दस्तावेज़ के बारे में पता है?एएमएफ संदेश संरचना?

उत्तर

9

विनिर्देश को "terse" के रूप में वर्णित किया जा सकता है।

एएमएफ एन्कोडिंग बाइट्स का उपयोग करता है जिसे "टाइप-मार्कर" कहा जाता है। एक पूर्णांक के लिए टाइप-मार्कर मान 4 है। पूर्णांक डेटा तुरंत इस टैग का पालन करता है, और 1-4 बाइट लंबा होता है। लंबाई भिन्न होती है क्योंकि पूर्णांक प्रकार "संपीड़ित" होता है ताकि 0-127 के मानों को केवल 1 बाइट की आवश्यकता हो, जबकि बड़े मानों को अधिक बाइट की आवश्यकता होती है। इस पूर्णांक प्रारूप को विनिर्देशन द्वारा "यू 2 9" कहा जाता है।

उदाहरण के लिए, अगर हम केवल पूर्णांक पारित करने के लिए थे "5", एक वैध AMF पैकेट इन दो बाइट्स होगा:
04 05

वेब पर मिल अनुप्रयोगों में, AMF डेटा कभी कभी पहले है नेटवर्क बाइट ऑर्डर में एक हस्ताक्षरित लंबे समय के रूप में एन्कोडेड लंबाई से। यदि आप इस तरह के एक आवेदन को देख रहे थे, तो आप देख सकते हैं:
00 00 00 02 04 05, जहां 00 00 00 02 इंगित करता है कि निम्न AMF डेटा 2 बाइट लंबा है।

अब, मान लीजिए हम एक वस्तु भेजा के बाद यह निम्नलिखित निर्माता था:

 
    this.ui = "button_press"; 
    this.param = 5; 

फिर हम AMF डेटा में निम्नलिखित देख सकते हैं:

0A - वस्तु टैग
2B - u29o-val: 2 सीलबंद सदस्य, लक्षण और डेटा के साथ ऑब्जेक्ट, संभवतः गतिशील सदस्य
01 - खाली स्ट्रिंग - अज्ञात ऑब्जेक्ट
05 - स्ट्रिंग-दर-मूल्य, स्ट्रिंग की लंबाई: 2
75 69 - 'ui'
0B - स्ट्रिंग-दर-मूल्य, स्ट्रिंग की लंबाई: 5
70 61 72 61 6D - 'परम'
19 - स्ट्रिंग-दर-मूल्य , स्ट्रिंग की लंबाई: 12
62 75 74 74 6F 6E 5F 70 72 65 73 73 - 'button_press'
04 - पूर्णांक
05 - पूर्णांक के मूल्य: 5
01 - खाली नाम, गतिशील की खाली सूची समाप्त हो जाता है मुझे mbs इस ऑब्जेक्ट

चूंकि उस पैकेट में 28 बाइट्स लगेंगे, यह पहले से चिपकाया जा सकता है: 00 00 00 1C जब जंगली में सामना करना पड़ा।

विचार करने की एक और संभावना यह है कि एएमएफ संचार को संपीड़ित किया जा सकता है, आमतौर पर ज़्लिब में उपलब्ध "डिफ्लेट" संपीड़न का उपयोग करना।

मुझे उम्मीद है कि यह आपको विनिर्देश को हल करने में मदद करेगा, लेकिन यदि आपके कोई प्रश्न हैं, तो मैं उन्हें जवाब देने का प्रयास करूंगा।

+0

धन्यवाद, बहुत उपयोगी। मैं वास्तव में उम्मीद कर रहा था कि कहीं भी एक संपूर्ण वैध एएमएफ संदेश का बीएनएफ विवरण है, जिसमें हेडर और व्हाट्नॉट शामिल हैं; मैं एएमएफपीएचपी के लिए कोड के माध्यम से बस यह देखने के लिए गया कि यह डिकोडिंग के दौरान क्या करता है, और उसमें बहुत सी चीजें थीं जो वास्तविक कल्पना में संकेत भी नहीं थीं, अकेले विस्तार से वर्णन करें। – dirtside

1

आप संदेश संरचना यह AMF0 spec के अंत में जोड़ा जाता है दूरस्थ बनाने के लिए देख रहे हैं - धारा 4

संबंधित मुद्दे