पृष्ठभूमि: मैं एक बीटा सर्वर पिंग करने के लिए एक साधारण यूडीपी अनुप्रयोग लिख रहा हूं जिसे मैं हर मिनट या तो प्रबंधित करता हूं ताकि मुझे यह बताने के लिए कि यह अभी भी ऊपर है और चल रहा है (मैं कर सकता हूं ' उन लोगों के लिए सर्वर पर पिंग सक्षम करें जो सोच रहे हैं)। जब मैं सर्वर का जवाब नहीं दे रहा हूं तो मुझे चेतावनी देने के लिए मैं अपने फोन पर इसे चलाने की योजना बना रहा हूं।एंड्रॉइड: java.net.DatagramSocket.bind: अमान्य तर्क अपवाद
मैं जैसे प्रतीत होता है सरल java.net.DatagramSocket उपयोग करने के लिए कोशिश कर रहा हूँ:
try
{
socket = new DatagramSocket();
socket.bind(null);
}
catch (SocketException e)
{
System.out.println(e.toString());
throw e;
}
भी मुझे चलो कहना है कि मैं एंड्रॉयड प्रकट के माध्यम से इंटरनेट अनुमतियों सक्षम किया है और अगर मैं का उपयोग करता है खंड को दूर ऐसा करने के लिए, मुझे अनुमति त्रुटियां मिलती हैं इसलिए मुझे यकीन है कि ठीक काम कर रहा है। जब मैं एंड्रॉइड वर्चुअल डिवाइस (एवीडी) में यह कोड डाउनलोड करता हूं और इसे निष्पादित करता हूं, कॉल करने के लिए कॉल पर() मुझे इस अपवाद के साथ प्रस्तुत किया जाता है:
03-17 19: 07: 39.401: INFO/System.out (338): java.net.BindException: अमान्य तर्क
this प्रलेखन के अनुसार, शून्य तर्क सही है:
सार्वजनिक शून्य बाँध (SocketAddress localAddr)
के बाद से: एपीआई स्तर 1
स्थानीय सॉकर द्वारा निर्दिष्ट स्थानीय पते और पोर्ट पर इस सॉकेट को बांधता है। यदि यह मान शून्य है तो किसी मान्य स्थानीय पते पर कोई भी निःशुल्क पोर्ट उपयोग किया जाता है।
लेकिन प्रलेखन पर भरोसा नहीं, मैं इस तरह अपने डिवाइस पर आई पी पतों की गणना करने का निर्णय लिया:
ArrayList<NetworkInterface> allInterfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
NetworkInterface eth = allInterfaces.get(0);
InetSocketAddress addr = new InetSocketAddress(eth.getInetAddresses().nextElement(), port);
try
{
socket = new DatagramSocket();
socket.bind(addr);
}
catch (SocketException e)
{
System.out.println(e.toString());
throw e;
}
जब मैं कोड के माध्यम से कदम, यह बहुत अच्छा काम करता है और मैं पर दो आईपी पते देख सकते हैं एवीडी लेकिन मुझे बाइंड() कॉल पर सटीक एक ही अपवाद मिलता है। क्या कोई वहां देखता है कि मैं क्या खो सकता हूं? मैं अनुसंधान करना जारी रखूंगा और आशा करता हूं कि मेरी अपनी समस्या का समाधान पोस्ट करें, लेकिन मुझे उम्मीद है कि कोई भी मेरे लिए इसे शॉर्टकट करने में सक्षम होगा।
पोर्ट नंबर? क्या यह वैध सीमा के भीतर है? –
विभिन्न पोर्ट नंबर के साथ प्रयास करें। –