2015-06-19 4 views
14

मैं अपने डेस्कटॉप पर एक प्रोग्राम से एम्यूलेटर पर एंड्रॉइड सर्वर तक पहुंचने में असमर्थ हूं, मैं इसे कैसे हल करूं?एंड्रॉइड सर्वर सॉकेट

कुछ (How to find LAN ip address of android device? से) कोड:

public static ArrayList<String> getSelfIP(){ 
    try { 
     ArrayList<String> ipList = new ArrayList<>(); 
     for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { 
      NetworkInterface intf = en.nextElement(); 
      for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { 
       InetAddress inetAddress = enumIpAddr.nextElement(); 
       if (!inetAddress.isLoopbackAddress()) { 
        ipList.add(inetAddress.getHostAddress().toString()); 
       } 
      } 
     } 

     return ipList; 
    } catch (SocketException ex) {} 
    return null; 
} 

परिणाम [fe80::5054:ff:fe12:3456%eth0, 10.0.2.15]

है क्या मैं कॉन्फ़िगर या एमुलेटर मेरे डेस्कटॉप कार्यक्रमों के द्वारा पहुंचा जा सकता बनाने के लिए क्या करना होगा?

मैं निम्नलिखित किया है: 50000:

> adb forward tcp:50000 tcp:50000

हालांकि, मैं स्थानीय होस्ट के माध्यम से सर्वर तक पहुँचने में असमर्थ हूँ।

+0

इतना मुश्किल क्यों है? यहां देखें: http://developer.android.com/tools/devices/emulator.html लेकिन वास्तविक डिवाइस का उपयोग करना बहुत आसान है। – greenapps

+0

मैंने अग्रेषण एडीबी कमांड के साथ प्रश्न अपडेट किया है, जो काम नहीं कर रहा है। – user3635998

+0

आप कौन से आईपी और पोर्ट को एम्यूलेटर पर सर्वर से कनेक्ट करने के लिए उपयोग करते हैं? किस पोर्ट पर आपका सर्वर सुन रहा है? – greenapps

उत्तर

4

आईपी पता 10.0.2.2 का उपयोग करने का प्रयास करें।

यह अपने मेजबान लूपबैक इंटरफेस (जैसे, आपके विकास मशीन पर 127.0.0.1) के लिए विशेष उर्फ ​​

1

this Android दस्तावेज़, धारा "नेटवर्क पुनर्निर्देशन का उपयोग करना" पर एक नज़र डालें है।

एम्यूलेटर कंसोल

प्रत्येक एमुलेटर उदाहरण के माध्यम से पुनर्निर्देशन की स्थापना एक नियंत्रण सांत्वना आप के लिए, आदेशों कि उदाहरण के लिए विशिष्ट हैं जारी करने के लिए कनेक्ट कर सकते हैं प्रदान करता है। एमुलेटर उदाहरण के लिए आवश्यकतानुसार पुनर्निर्देशन सेट अप करने के लिए आप रेडिर कंसोल कमांड का उपयोग कर सकते हैं।

सबसे पहले, लक्ष्य एमुलेटर उदाहरण के लिए कंसोल पोर्ट नंबर निर्धारित करें। उदाहरण के लिए, शुरू की पहली एमुलेटर उदाहरण के लिए कंसोल पोर्ट नंबर 5554. अगले है, लक्ष्य एमुलेटर उदाहरण के कंसोल से कनेक्ट अपने कंसोल पोर्ट संख्या का उल्लेख करते समय इस प्रकार है:

telnet localhost 5554

कनेक्ट होने के बाद , पुनर्निर्देशन के साथ काम करने के लिए redir कमांड का उपयोग करें।

add <protocol>:<host-port>:<guest-port>

जहां <protocol> या तो टीसीपी या UDP, और <host-port> और <guest-port> है अपने खुद मशीन और नकल करते प्रणाली, क्रमशः के बीच मानचित्रण सेट: एक पुनर्निर्देशन, उपयोग को जोड़ने के लिए।

उदाहरण के लिए, निम्न आदेश एक पुनर्निर्देशन कि 127.0.0.1:5000 पर अपने मेजबान (विकास) मशीन के लिए सभी आने वाली TCP कनेक्शन संभालती है और उन्हें नकल करते सिस्टम के 10.0.2 के माध्यम से पारित होगा सेट करता है।15: 6000:

redir add tcp:5000:6000

आपके मामले में पिछले कमांड यह होगी

redir add tcp:5000:5000 
0

मैं इस मुद्दे को एक बार किया था, का उपयोग 10.0.2.2 आईपी पता यह आपकी समस्या का समाधान करना चाहिए।

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