एम्युलेटर, नेटवर्किंग से जुड़ी अलग-अलग तरह की सुविधाएं देता है. इनका इस्तेमाल इन कामों के लिए किया जा सकता है अपने ऐप्लिकेशन के लिए जटिल मॉडलिंग और टेस्टिंग एनवायरमेंट सेट अप करें. यह पेज एम्युलेटर नेटवर्क आर्किटेक्चर और क्षमताओं की जानकारी देता है.
नेटवर्क पता स्थान
एम्युलेटर का हर इंस्टेंस, वर्चुअल राऊटर या फ़ायरवॉल सेवा पर काम करता है जो इसे आपके डेवलपमेंट मशीन के नेटवर्क इंटरफ़ेस और सेटिंग से अलग करती है को भी इकट्ठा किया जा सकता है. एम्युलेट किया गया डिवाइस आपकी डेवलपमेंट मशीन का पता नहीं लगा सकता या नेटवर्क पर मौजूद एम्युलेटर इंस्टेंस. इससे सिर्फ़ यह पता चलता है कि ईथरनेट के ज़रिए राऊटर या फ़ायरवॉल से कनेक्ट करता है.
हर इंस्टेंस के लिए वर्चुअल राऊटर, 10.0.2/24 नेटवर्क पते को मैनेज करता है स्पेस. राऊटर से मैनेज किए जाने वाले सभी पते इस फ़ॉर्मैट में हैं 10.0.2.xx, जहां xx एक संख्या है. इस स्पेस में मौजूद पते एम्युलेटर या राऊटर से इस तरह पहले से आबंटित हो जाता है:
नेटवर्क का पता | ब्यौरा |
---|---|
10.0.2.1 | राऊटर या गेटवे पता |
10.0.2.2 | आपके होस्ट लूपबैक इंटरफ़ेस के लिए विशेष उपनाम (आपके डेवलपमेंट मशीन) |
10.0.2.3 | पहला डीएनएस सर्वर |
10.0.2.4 / 10.0.2.5 / 10.0.2.6 | वैकल्पिक दूसरे, तीसरे, और चौथे डीएनएस सर्वर |
10.0.2.15 | ईथरनेट का इस्तेमाल करके कनेक्ट किए जाने पर, एम्युलेट किया गया डिवाइस नेटवर्क |
10.0.2.16 | वाई-फ़ाई का इस्तेमाल करके कनेक्ट किए जाने पर, एम्युलेट किया गया डिवाइस नेटवर्क |
127.0.0.1 | एम्युलेट किया गया डिवाइस का लूपबैक इंटरफ़ेस |
सभी चल रहे एम्युलेटर के लिए, असाइन किए गए पते का ही इस्तेमाल किया जाता है इंस्टेंस. इसका मतलब है कि अगर एक ही समय पर दो इंस्टेंस चल रहे हैं हर मशीन का अपना अलग राऊटर होगा और उसके पीछे हर एक में 10.0.2.15 का आईपी पता. इन इंस्टेंस को राऊटर से अलग किया जाता है और इन्हें नहीं किया जा सकता एक ही नेटवर्क पर एक-दूसरे का पता लगाते हैं. यह जानने के लिए कि एम्युलेटर इंस्टेंस को टीसीपी/यूडीपी पर शेयर करने दें. इसके लिए, एम्युलेटर इंस्टेंस को इंटरकनेक्ट करने से जुड़ा सेक्शन देखें.
आपकी डेवलपमेंट मशीन पर दिया गया पता 127.0.0.1 मेल खाता है को एम्युलेटर के लूपबैक इंटरफ़ेस पर ले जाया जा सकता है. चल रही सेवाओं को ऐक्सेस करने के लिए लूपबैक इंटरफ़ेस पर, पते के बजाय 10.0.2.2 पर सेट करें.
एम्युलेट किए गए डिवाइस के पहले से तय किए गए पते, जो Android Emulator के लिए होते हैं और असल में काफ़ी अलग होते हैं डिवाइस (जिनके नेटवर्क पते का अनुवाद किए जाने की संभावना भी होती है, खास तौर से के लिए डिज़ाइन किया गया है.
स्थानीय नेटवर्किंग सीमाएं
एम्युलेटर पर चल रहे Android ऐप्लिकेशन, आपके डिवाइस पर उपलब्ध नेटवर्क से कनेक्ट हो सकते हैं वर्कस्टेशन है. हालांकि, ऐप्लिकेशन सीधे हार्डवेयर और एम्युलेटर से नहीं, बल्कि एम्युलेटर के ज़रिए कनेक्ट होते हैं आपके वर्कस्टेशन पर किसी सामान्य ऐप्लिकेशन की तरह काम करता है. इसकी वजह से कुछ सीमाएं हो सकती हैं:
- एम्युलेट किए गए डिवाइस से होने वाली बातचीत को फ़ायरवॉल की मदद से ब्लॉक किया जा सकता है प्रोग्राम चलाने में मदद करता है.
- एम्युलेट किए गए डिवाइस से होने वाली बातचीत को कोई दूसरा व्यक्ति ब्लॉक कर सकता है (फ़िज़िकल) फ़ायरवॉल या राऊटर, जहां आपकी मशीन कनेक्ट हो.
एम्युलेटर का वर्चुअल राऊटर सभी आउटबाउंड टीसीपी और एम्युलेट किए गए डिवाइस की ओर से यूडीपी कनेक्शन और मैसेज, बशर्ते डेवलपमेंट मशीन नेटवर्क एनवायरमेंट की मदद से ऐसा किया जा सकता है. कोई नहीं पोर्ट नंबर या रेंज पर पहले से मौजूद सीमाएं, सिर्फ़ आपके होस्ट ऑपरेटिंग सिस्टम और नेटवर्क.
पर्यावरण के आधार पर, हो सकता है कि एम्युलेटर प्रोटोकॉल (जैसे, "पिंग" के लिए इस्तेमाल किया जाने वाला ICMP"). इस समय, एम्युलेटर, IGMP या मल्टीकास्ट के साथ काम नहीं करता.
नेटवर्क रीडायरेक्शन का इस्तेमाल करना
वर्चुअल राऊटर के पीछे मौजूद एम्युलेटर इंस्टेंस से कनेक्ट करने के लिए, वर्चुअल राऊटर पर नेटवर्क रीडायरेक्ट करने की सुविधा सेट अप करें. इसके बाद, क्लाइंट कनेक्ट कर सकते हैं राऊटर पर किसी खास मेहमान पोर्ट पर पहुंच सकता है, जबकि राऊटर ट्रैफ़िक को भेज सकता है पोर्ट से एम्युलेट किए गए डिवाइस होस्ट पोर्ट तक.
नेटवर्क रीडायरेक्शन सेट अप करने के लिए, होस्ट और मेहमान की मैपिंग बनाएं
एम्युलेटर इंस्टेंस पर मौजूद पोर्ट और पते. सेट अप करने के दो तरीके हैं
नेटवर्क पर रीडायरेक्ट करना: एम्युलेटर कंसोल के निर्देशों का इस्तेमाल करना और Android का इस्तेमाल करना
डीबग ब्रिज (adb
) टूल, जैसा कि नीचे दिए गए सेक्शन में बताया गया है.
एम्युलेटर कंसोल के ज़रिए रीडायरेक्ट की सुविधा सेट अप करें
हर एम्युलेटर इंस्टेंस से एक कंट्रोल कंसोल मिलता है, जिसे कनेक्ट किया जा सकता है और
करता है जो उस इंस्टेंस के लिए विशिष्ट हैं. इसका इस्तेमाल करें
redir
कंसोल कमांड, ताकि वेब ब्राउज़र पर
एम्युलेटर इंस्टेंस पर लागू होता है.
सबसे पहले, टारगेट एम्युलेटर इंस्टेंस के लिए कंसोल पोर्ट नंबर तय करें. उदाहरण के लिए, पहली बार एम्युलेटर इंस्टेंस के लिए लॉन्च किया गया कंसोल पोर्ट नंबर 5554 है. इसके बाद, टारगेट एम्युलेटर इंस्टेंस के कंसोल से कनेक्ट करें. साथ ही, यह तय करें कि इसका कंसोल पोर्ट नंबर इस तरह से दिखेगा:
telnet localhost 5554
कनेक्ट करने के बाद, रीडायरेक्शन सेट अप करने से पहले आपको अपनी पहचान की पुष्टि करनी होगी. यहां जाएं:
इसके लिए कंसोल सेशन शुरू और बंद करना
इस बारे में ज़्यादा जानकारी पाएं. पुष्टि होने के बाद, इन पर काम करने के लिए redir
निर्देश का इस्तेमाल करें
रीडायरेक्ट करने की सुविधा.
रीडायरेक्ट जोड़ने के लिए, इनका इस्तेमाल करें:
redir add <protocol>:<host-port>:<guest-port>
जहां <protocol>
, tcp
या udp
है,
और <host-port>
और <guest-port>
ने
आपकी मशीन और एम्युलेट किए गए सिस्टम के बीच मैपिंग कर रहा है.
उदाहरण के लिए, नीचे दिए गए निर्देश से रीडायरेक्ट करने की सुविधा सेट अप होती है, जो 127.0.0.1:5000 पर आपकी होस्ट (डेवलपमेंट) मशीन से इनकमिंग टीसीपी कनेक्शन और उन्हें 10.0.2.15:6000 को एम्युलेट किए गए सिस्टम में पास कर देगा:
redir add tcp:5000:6000
रीडायरेक्शन मिटाने के लिए, redir del
निर्देश का इस्तेमाल करें. यहां की यात्रा पर हूं
किसी खास इंस्टेंस के लिए सभी रीडायरेक्शन शामिल करें, तो redir
list
का इस्तेमाल करें. इनके और अन्य कंसोल कमांड के बारे में ज़्यादा जानने के लिए,
एम्युलेटर कंसोल के निर्देश भेजें.
ध्यान दें कि आपके स्थानीय वातावरण के हिसाब से पोर्ट नंबर प्रतिबंधित हैं. आम तौर पर
इसका मतलब है कि आप खास यूआरएल के बिना, 1024 में होस्ट पोर्ट नंबर का इस्तेमाल नहीं कर सकते
आपके पास एडमिन के अधिकार हैं. इसके अलावा, आप
वह होस्ट पोर्ट जिसका इस्तेमाल आपकी मशीन पर पहले से ही कोई दूसरी प्रोसेस कर रहा है. इसमें
मामला, redir
उस प्रभाव में एक गड़बड़ी संदेश जनरेट करता है.
adb की मदद से रीडायरेक्शन की सुविधा सेट अप करना
'Android डीबग ब्रिज (adb
)' टूल, पोर्ट फ़ॉरवर्डिंग की सुविधा देता है. यह एक अन्य
इस टूल का इस्तेमाल करके, नेटवर्क रीडायरेक्शन को सेट अप किया जा सकता है. ज़्यादा जानकारी के लिए, adb
में पोर्ट फ़ॉरवर्डिंग सेट अप करें देखें
दस्तावेज़.
ध्यान दें कि adb
फ़िलहाल रीडायरेक्ट करने की सुविधा को हटाने का कोई तरीका उपलब्ध नहीं कराता है
हालांकि, adb
सर्वर को बंद करके ऐसा किया जा सकता है.
एम्युलेटर के लिए डीएनएस की सेटिंग कॉन्फ़िगर करें
स्टार्टअप पर, एम्युलेटर उन डीएनएस सर्वर की सूची को पढ़ता है जिन्हें आपका सिस्टम फ़िलहाल इसका इस्तेमाल कर रहे हैं. इसके बाद, यह इस सर्वर पर, ज़्यादा से ज़्यादा चार सर्वर के आईपी पतों को सेव करता है सूची में जोड़े गए ईमेल पतों की सूची बनाएं और उनके लिए एम्युलेट किए गए पतों 10.0.2.3, 10.0.2.4, ज़रूरत के मुताबिक 10.0.2.5 और 10.0.2.6.
Linux और macOS पर एम्युलेटर, डीएनएस सर्वर के पतों को पार्स करके हासिल करता है
/etc/resolv.conf
फ़ाइल. Windows पर, एम्युलेटर
GetNetworkParams()
API पर कॉल करके पते पाएं. ध्यान दें कि
आम तौर पर इसका मतलब है कि एम्युलेटर आपके "होस्ट" के कॉन्टेंट को अनदेखा कर देता है फ़ाइल
(Linux/macOS पर /etc/hosts
, %WINDOWS%/system32/HOSTS
Windows पर).
कमांड लाइन से एम्युलेटर को शुरू करते समय,
मैन्युअल तौर पर तय करने के लिए -dns-server <serverList>
विकल्प
इस्तेमाल करने के लिए डीएनएस सर्वर के पते, जहां <serverList>
कॉमा लगाकर अलग किया गया है
सर्वर के नामों या आईपी पतों की सूची. आपको यह विकल्प उपयोगी लग सकता है, अगर
सिम्युलेट किए गए नेटवर्क में डीएनएस रिज़ॉल्यूशन की समस्याओं का सामना करना पड़ सकता है (उदाहरण के लिए,
"होस्ट की जानकारी नहीं है" वेब ब्राउज़र का इस्तेमाल करते समय दिखने वाला मैसेज).
प्रॉक्सी के साथ एम्युलेटर का इस्तेमाल करें
कई कॉर्पोरेट नेटवर्क पर, इंटरनेट से सीधे संपर्क को अस्वीकार कर दिया जाता है नेटवर्क एडमिन. इसके बजाय, इंटरनेट कनेक्शन को एक खास प्रॉक्सी. प्रॉक्सी की ज़रूरत वाले नेटवर्क पर इंटरनेट ऐक्सेस करने के लिए, एम्युलेटर यह जानने की ज़रूरत है कि एक प्रॉक्सी है और उसे उससे कनेक्ट करने की ज़रूरत है.
एचटीटीपी की शैली की वजह से, यह डायरेक्ट वेब सर्वर कनेक्शन और एक प्रॉक्सी का नतीजा अलग-अलग GET अनुरोधों में होता है. एम्युलेटर, प्रॉक्सी से बात करने से पहले, वर्चुअल डिवाइस से अनुरोध पाएं, ताकि वह काम करे.
अगर आपके एम्युलेटर को किसी प्रॉक्सी सर्वर के ज़रिए इंटरनेट ऐक्सेस करना ज़रूरी है, तो एम्युलेटर की एक्सटेंडेड कंट्रोल स्क्रीन से, कस्टम एचटीटीपी प्रॉक्सी:
- एम्युलेटर खोलने के बाद, ज़्यादा
पर क्लिक करें.
- सेटिंग पर क्लिक करें और प्रॉक्सी.
- अपनी एचटीटीपी प्रॉक्सी सेटिंग तय करें.
![](https://developer.android.com/static/studio/images/run/emulator-proxy-settings_2x.png?authuser=8&hl=hi)
इसके अलावा, कमांड लाइन से प्रॉक्सी को
एम्युलेटर को शुरू करते समय, -http-proxy <proxy>
विकल्प का इस्तेमाल करें.
ऐसी स्थिति में, प्रॉक्सी की जानकारी दें
<proxy>
में इनमें से किसी एक फ़ॉर्मैट में:
http://<machineName>:<port>
या
http://<username>:<password>@<machineName>:<port>
-http-proxy
विकल्प एम्युलेटर को तय की गई वैल्यू का इस्तेमाल करने के लिए मजबूर करता है
सभी आउटगोइंग टीसीपी कनेक्शन के लिए एचटीटीपी या एचटीटीपीएस प्रॉक्सी. UDP के लिए रीडायरेक्शन नहीं है
समर्थित हैं.
इसके अलावा, आपके पास एनवायरमेंट वैरिएबल को तय करने का भी विकल्प है
http_proxy
उस वैल्यू के साथ जिसे आपको इस्तेमाल करना है
<proxy>
. इस मामले में, आपको
<proxy>
ने -http-proxy
कमांड में—यह
एम्युलेटर, http_proxy
के एनवायरमेंट वैरिएबल की वैल्यू की जांच करता है:
स्टार्टअप हो जाता है और तय किए जाने पर, इसकी वैल्यू अपने-आप इस्तेमाल करता है.
प्रॉक्सी का विश्लेषण करने के लिए, -debug-proxy
विकल्प का इस्तेमाल किया जा सकता है
कनेक्शन में समस्या.
इंटरकनेक्ट एम्युलेटर इंस्टेंस
एक एम्युलेटर इंस्टेंस को दूसरे इंस्टेंस के साथ कम्यूनिकेशन करने की अनुमति देने के लिए, सेट अप करें नेटवर्क रीडायरेक्शन का तरीका नीचे बताया गया है.
मान लें कि आपका एनवायरमेंट इस तरह दिखाया गया है:
- A आपकी डेवलपमेंट मशीन है.
- B आपका पहला एम्युलेटर इंस्टेंस है, जो A पर चल रहा है.
- C आपका दूसरा एम्युलेटर इंस्टेंस है, जो A पर भी चल रहा है.
अगर आपको B पर कोई ऐसा सर्वर चलाना है जिससे C कनेक्ट होगा, तो उसे सेट करें इस तरह बढ़ा सकते हैं:
- यह देखते हुए, B पर सर्वर सेट अप करें 10.0.2.15:<serverPort>.
- B कंसोल पर, इससे रीडायरेक्शन सेट अप करें ए:localhost:<localPort> से B:10.0.2.15:<serverPort>.
- C पर, क्लाइंट को 10.0.2.2:<localport> से कनेक्ट करवाएं.
उदाहरण के लिए, यदि आप कोई HTTP सर्वर चलाना चाहते हैं, तो
<serverPort>
की भूमिका 80 और <localPort>
8080:
- B 10.0.2.15:80 पर सुनता है.
- B कंसोल पर,
redir add tcp:8080:80.
समस्या है - C, 10.0.2.2:8080 से कनेक्ट होता है.
किसी अन्य एम्युलेटर इंस्टेंस पर वॉइस कॉल या एसएमएस भेजें
एम्युलेटर, सिम्युलेटेड वॉइस कॉल और एसएमएस मैसेज को एक से दूसरे इंस्टेंस पर अपने-आप फ़ॉरवर्ड करता है कोई दूसरा. वॉइस कॉल या मैसेज (एसएमएस) भेजने के लिए, डायलर ऐप्लिकेशन या एसएमएस ऐप्लिकेशन का इस्तेमाल करें, मिल सकता है.
किसी अन्य एम्युलेटर इंस्टेंस पर सिम्युलेटेड वॉइस कॉल शुरू करने के लिए:
- मूल एम्युलेटर इंस्टेंस पर डायलर ऐप्लिकेशन लॉन्च करें.
डायल किए जाने वाले नंबर के रूप में, टारगेट इंस्टेंस का कंसोल पोर्ट नंबर डालें.
आप टारगेट इंस्टेंस के विंडो टाइटल की जांच करके, उसका कंसोल पोर्ट नंबर पता करें, अगर ऐसा है किसी अलग विंडो में चल रहा हो, लेकिन टूल विंडो में नहीं चल रहा हो. कॉन्टेंट बनाने कंसोल पोर्ट नंबर को "Android Emulator (<port>)" के तौर पर रिपोर्ट किया जाता है.
इसके अलावा,
adb devices
कमांड, चल रहे वर्चुअल डिवाइसों और उनके कंसोल पोर्ट की सूची को प्रिंट करता है नंबर. ज़्यादा जानकारी के लिए, इसके लिए क्वेरी देखें डिवाइस में बदल सकते हैं.- डायल बटन पर क्लिक करें. टारगेट एम्युलेटर इंस्टेंस में एक नया इनबाउंड कॉल दिखता है.
किसी अन्य एम्युलेटर इंस्टेंस पर एसएमएस मैसेज भेजने के लिए:
- अगर उपलब्ध हो, तो एसएमएस ऐप्लिकेशन लॉन्च करें.
- टारगेट एम्युलेटर इंस्टेंस के कंसोल पोर्ट नंबर को एसएमएस पते के तौर पर डालें.
- मैसेज का टेक्स्ट डालें.
- मैसेज भेजें. टारगेट एम्युलेटर इंस्टेंस पर मैसेज डिलीवर किया जाता है.
इनकमिंग वॉइस कॉल या मैसेज (एसएमएस) को सिम्युलेट करने के लिए, एम्युलेटर कंसोल से भी कनेक्ट किया जा सकता है. ज़्यादा जानकारी के लिए, यह देखें टेलीफ़ोनी का एम्युलेशन और मैसेज (एसएमएस) की नकल करना.