2012-09-20 16 views
13

मैं क्लाइंट सर्वर टीसीपी/आईपी एप्लिकेशन विकसित करने की कोशिश कर रहा हूं। मेरे पास एक सर्वर है जो मेरे पीसी पर चल रहा है और क्लाइंट ऐप मोबाइल पर चल रहा है। वे दोनों एक ही वाई-फाई नेटवर्क में हैं, लेकिन मैं उनके बीच एक कनेक्शन स्थापित नहीं कर सकता।टीसीपी आईपी क्लाइंट - ईहोस्ट्यून्रेच (होस्ट करने के लिए कोई रास्ता नहीं)

09-21 01:08:40.422: W/System.err(8536): java.net.ConnectException: failed to connect to /192.168.15.115 (port 4449): connect failed: EHOSTUNREACH (No route to host) 
09-21 01:08:40.453: W/System.err(8536):  at libcore.io.IoBridge.connect(IoBridge.java:114) 
09-21 01:08:40.453: W/System.err(8536):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 
09-21 01:08:40.453: W/System.err(8536):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
09-21 01:08:40.453: W/System.err(8536):  at java.net.Socket.startupSocket(Socket.java:566) 
09-21 01:08:40.453: W/System.err(8536):  at java.net.Socket.tryAllAddresses(Socket.java:127) 
09-21 01:08:40.453: W/System.err(8536):  at java.net.Socket.<init>(Socket.java:177) 
09-21 01:08:40.453: W/System.err(8536):  at java.net.Socket.<init>(Socket.java:149) 
09-21 01:08:40.453: W/System.err(8536):  at sabarish.example.client_mobile.MainActivity$1.onClick(MainActivity.java:61) 
09-21 01:08:40.453: W/System.err(8536):  at android.view.View.performClick(View.java:3511) 
09-21 01:08:40.453: W/System.err(8536):  at android.view.View$PerformClick.run(View.java:14105) 
09-21 01:08:40.453: W/System.err(8536):  at android.os.Handler.handleCallback(Handler.java:605) 
09-21 01:08:40.453: W/System.err(8536):  at android.os.Handler.dispatchMessage(Handler.java:92) 
09-21 01:08:40.453: W/System.err(8536):  at android.os.Looper.loop(Looper.java:137) 
09-21 01:08:40.453: W/System.err(8536):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
09-21 01:08:40.453: W/System.err(8536):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-21 01:08:40.453: W/System.err(8536):  at java.lang.reflect.Method.invoke(Method.java:511) 
09-21 01:08:40.453: W/System.err(8536):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
09-21 01:08:40.453: W/System.err(8536):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
09-21 01:08:40.453: W/System.err(8536):  at dalvik.system.NativeStart.main(Native Method) 
09-21 01:08:40.457: W/System.err(8536): Caused by: libcore.io.ErrnoException: connect failed: EHOSTUNREACH (No route to host) 
09-21 01:08:40.457: W/System.err(8536):  at libcore.io.Posix.connect(Native Method) 
09-21 01:08:40.457: W/System.err(8536):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85) 
09-21 01:08:40.457: W/System.err(8536):  at libcore.io.IoBridge.connectErrno(IoBridge.java:127) 
09-21 01:08:40.457: W/System.err(8536):  at libcore.io.IoBridge.connect(IoBridge.java:112) 
09-21 01:08:40.457: W/System.err(8536):  ... 18 more 

कोड मैं उपयोग कर रहा हूँ:

public class MainActivity extends Activity { 
    private Socket client; 
    private PrintWriter printwriter; 
    private EditText textField; 
    private Button button; 
    private String messsage; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     textField = (EditText) findViewById(R.id.editText1); //reference to the text field 
     button = (Button) findViewById(R.id.button1); //reference to the send button 

     button.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       messsage = textField.getText().toString(); //get the text message on the text field 
       textField.setText("");  //Reset the text field to blank 

       try { 
        client = new Socket("192.168.15.115", 4449); //connect to server 
        printwriter = new PrintWriter(client.getOutputStream(),true); 
        printwriter.write(messsage); //write the message to output stream 

        printwriter.flush(); 
        printwriter.close(); 
        client.close(); //closing the connection 

       } catch (UnknownHostException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 
} 

क्या मैं गलत कर रहा हूँ ग्राहक डिबगिंग जबकि Android एप्लिकेशन निम्न त्रुटि से पता चला है?

+0

अपने पीसी पक्ष पर अपने फ़ायरवॉल अनवरोधित संभावना कर रहे हैं बंदरगाह अवरुद्ध है या ... की पुष्टि और जाँच अपने निजी IP पता 192.168.xy सीमा में है कि और वाईफाई पर DHCP वास्तव में बाहर dishing है आपके एंड्रॉइड डिवाइस पर 1 9 2.168.xy की एक ही नेटवर्क एड्रेस रेंज ... – t0mm13b

उत्तर

13

कोई रूट त्रुटि इंगित करती है कि जब टीसीपी कनेक्शन का प्रयास किया गया था, तो कनेक्शन विफल हो गया क्योंकि अंतर्निहित प्रोटोकॉल सॉफ़्टवेयर नामित लक्ष्य नोड पर नेटवर्क नोड मार्ग पर नेटवर्क नोड नहीं ढूंढ सका।

फिक्स कुछ हद तक ऑपरेटिंग सिस्टम निर्भर है लेकिन इसे मुख्य रूप से आपको अपनी रूटिंग टेबल सेट अप करने की आवश्यकता होती है ताकि जिस डिवाइस से आप कनेक्ट करने का प्रयास कर रहे हैं वह यह पता लगाने में सक्षम हो कि आप जिस डिवाइस से कनेक्ट करना चाहते हैं उसे कैसे पहुंचाया जा सकता है।

आम तौर पर आप, आदि ऐसे रूटर के रूप में अन्य सूचना प्रौद्योगिकी उपकरणों के द्वारा हल किया जाना है जो जब आप कनेक्ट करने का प्रयास, कनेक्शन अनुरोध नेटवर्क प्रवेश द्वार बाहर चला जाता है के लिए दरवाजे खोल निर्दिष्ट

यह एक Android डिवाइस होने के लिए लग रहा है , इसलिए पहली बात यह सुनिश्चित करना है कि आपके पास कनेक्टिविटी है या नहीं, वाईफ़ाई या सेल। एक और यह सुनिश्चित करना होगा कि वाईफाई या सेल चालू हो और परिचालन हो।

आपके द्वारा निर्दिष्ट आईपी पता आमतौर पर एक निजी उप-नेट के भीतर होता है। तो जांचने की बात यह है कि क्या डिवाइस जिसे आप कनेक्ट करने का प्रयास कर रहे हैं वह उसी उप-नेट पर है जिस पर आपका डिवाइस चालू है।

यहां एक document on sub-nets and routing है।

+1

चूंकि यह एंड्रॉइड पहली चीज़ है जिसे आपको देखने की आवश्यकता है अनुमति है। 09-21 01: 08: 40.457: डब्ल्यू/सिस्टम.एर (8536): libcore.io.BlockGuardOs.connect (BlockGuardOs.java:85) इंगित करता है कि कनेक्शन डिवाइस पर नीति द्वारा अस्वीकार कर दिया गया था। – destenson

6

ऐसा लगता है कि नेटवर्क समस्या समस्या जावा समस्या नहीं है। कोई एक:

  • ग्राहक पर नेटवर्किंग या तो यह नहीं पता कि सर्वर पर रूट के पैकेट के लिए,
  • ग्राहक के बंदरगाह 4449 पर कनेक्शन का प्रयास फ़ायरवॉल या पैकेट फ़िल्टर द्वारा अवरुद्ध किया जा रहा है, या
  • आप गलत आईपी पता का उपयोग कर रहे हैं।

("कोई मार्ग की मेजबानी के लिए" संदेश चलता है कि यह पहली समस्या है, लेकिन कभी कभी फायरवॉल यातायात कि अवांछित है भ्रामक प्रतिक्रियाएं देने के लिए कॉन्फ़िगर किया गया है।)

वैसे भी, आप बंद बेहतर होगा कॉन्फ़िगर कैसे करें और/या नेटवर्क और रूटिंग पर साइट ढूंढ रहे हैं।

-1

हाँ ..

मेजबान, पहुंच योग्य नहीं है बस ऐसे ही। हालांकि, अगर सब कुछ ओके है (अच्छी तरह से कॉन्फ़िगर नोड/नेटवर्क, अच्छा वाईफाई सिग्नल, ..) आप ping serverIP (फोन से) या ping smartphone (सर्वर से) का उपयोग कर प्रक्रिया को मजबूर कर सकते हैं।

पिंग (आईसीएमपी पैकेट) राउटर को नए रूटिंग (मेजबान तक पहुंचने के तरीके) को गति देने के लिए मजबूर करेगा ...बहुत सारे पिंग्स भेजें (-एन विकल्प) उदाहरण: ping google.com -n 1000 (1000 लगातार पिंग्स)

+0

उसी समय पिंग करें जब आप कनेक्ट (ऐप) को कनेक्ट करने का प्रयास करते हैं ... आप सर्वर पोर्ट में एक टेलनेट करने के लिए विचार कर सकते हैं (यह सुनिश्चित करने के लिए कि यह खुला है) –

+0

एक 'पिंग' स्थानीय एआरपी तालिका को पॉप्युलेट कर सकता है लेकिन यह असंभव है रूटिंग टेबल सहित कुछ भी प्रभावित करें (जो स्थिर हैं या बीजीपी जैसे प्रोटोकॉल के साथ कॉन्फ़िगर किए गए हैं, डिवाइस द्वारा नहीं)। और चूंकि यह एक ही स्थानीय सबनेट पर किसी आईपी पते के लिए मैक पता प्राप्त करने के लिए केवल एआरपी करने के लिए कुछ एमएस लेता है, इसलिए आप कुछ भी तेज करने वाले नहीं हैं। –

1

हैलो मुझे अपने मैक में एक ही समस्या थी और एंड्रॉइड डिवाइस में ऐप चला रहा था। मैं 2 बातें यह काम करने के लिए निम्नलिखित करना था: बंद में मैक

  1. स्विच फ़ायरवॉल
  2. अवरक्त रिसीवर (सिस्टम प्राथ> सुरक्षा> फ़ायरवॉल> उन्नत)

सक्षम करें और यह काम किया !

+0

मेरी सिस्टम फ़ायरवॉल बंद है लेकिन अभी भी एक ही समस्या हो रही है .. –

0

मुझे एक ही समस्या का सामना करना पड़ता है जब मैंने एंड्रॉइड एप्लिकेशन जावा डेस्कटॉप सर्वर के साथ संवाद किया, समस्या को हल करने के लिए बस पीसीबी के साथ एंड्रॉइड फोन को कनेक्ट करने वाले यूएसबी केबल को डिस्कनेक्ट करें।

+0

आपका उत्तर पूछे गए प्रश्न से भी मेल नहीं खाता है ... मोबाइल नेटवर्क के लिए यूएसबी केबल समस्या कैसे हो सकती है। – Deepak

+0

समाधान होना संभव नहीं है, यह काम नहीं करेगा। –

0

अपने फोन पर एक पिंग ऐप डाउनलोड करें और सर्वर आईपी को पिंग करने का प्रयास करें यदि यह ठीक है ... अगर अपाचे का उपयोग करते हैं तो स्थानीय मशीन आईपी httpd.conf कॉन्फ़िगरेशन फ़ाइल में डाल दें।

# Change this to Listen on specific IP addresses as shown below to 
# prevent Apache from glomming onto all bound IP addresses. 
# 
#Listen 12.34.56.78:80 
Listen 127.0.0.1:80 
Listen 192.168.1.30:80 (your IP)