अनुरोध किया है कि मैंने Android का उपयोग करते समय सॉकेटएक्सप्शन के बारे में कई प्रश्न देखे हैं, लेकिन उनमें से कोई भी BindException को कवर नहीं करता है कि मुझे अपने मैनिफेस्ट में निर्दिष्ट इंटरनेट अनुमति के साथ भी मिलता है।इंटरनेट अनुमति के साथ BindException
यहाँ मेरी प्रकट का हिस्सा है:
04-22 14:49:06.117: DEBUG/MyLibrary(4844): Address to bind: 192.168.1.14 port: 843 04-22 14:49:06.197: WARN/System.err(4844): java.net.BindException: Permission denied (maybe missing INTERNET permission) 04-22 14:49:06.207: WARN/System.err(4844): at org.apache.harmony.luni.platform.OSNetworkSystem.socketBindImpl(Native Method) 04-22 14:49:06.207: WARN/System.err(4844): at org.apache.harmony.luni.platform.OSNetworkSystem.bind(OSNetworkSystem.java:107) 04-22 14:49:06.217: WARN/System.err(4844): at org.apache.harmony.luni.net.PlainSocketImpl.bind(PlainSocketImpl.java:184) 04-22 14:49:06.217: WARN/System.err(4844): at java.net.ServerSocket.bind(ServerSocket.java:414) 04-22 14:49:06.227: WARN/System.err(4844): at org.apache.harmony.nio.internal.ServerSocketChannelImpl$ServerSocketAdapter.bind(ServerSocketChannelImpl.java:213) 04-22 14:49:06.227: WARN/System.err(4844): at java.net.ServerSocket.bind(ServerSocket.java:367) 04-22 14:49:06.237: WARN/System.err(4844): at org.apache.harmony.nio.internal.ServerSocketChannelImpl$ServerSocketAdapter.bind(ServerSocketChannelImpl.java:283) 04-22 14:49:06.237: WARN/System.err(4844): at mylibrary.net.PolicyConnection$PolicyServerWorker.(PolicyConnection.java:201)
मैं सच में आशा है कि यह एक साधारण सी समस्या और तथ्य यह है कि से जटिल कुछ नहीं है:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.READ_OWNER_DATA"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCOUNT_MANAGER"></uses-permission>
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"></uses-permission>
यहाँ मेरी LogCat उत्पादन के संबंधित भाग है बाध्यकारी एक बंदरगाह कम से कम 1024.
अद्यतन
पर एक कार्यकर्ता धागा भीतर उत्पन्न हो रही हैऐसा लगता है कि यह एक विशेषाधिकार प्राप्त बंदरगाह मुद्दा है, किसी को भी पता है कि एंड्रॉइड में 1024 से कम बंदरगाहों को कैसे बांधना है?
SelectorProvider provider = SelectorProvider.provider();
try {
ServerSocketChannel channel = provider.openServerSocketChannel();
policySocket = channel.socket();
Log.d("MyLibrary", "Address to bind: " + device.getAddress().getAddress() + " port: 843");
InetSocketAddress addr = new InetSocketAddress(InetAddress.getByName(device.getAddress().getAddress()), 843);
policySocket.bind(addr);
policySocket.setReuseAddress(true);
policySocket.setReceiveBufferSize(256);
} catch (Exception e) {
e.printStackTrace();
}
दुर्भाग्य से सच :( –
हममम ... एक निहित वातावरण में यह करने के लिए कैसे। हम अपने एंड्रॉयड प्लेटफॉर्म एक एम्बेडेड डिवाइस के लिए निर्माण लगता है पोर्ट 24 पर बाध्य करने के लिए विशेषाधिकार प्राप्त करने के लिए मुझे एंड्रॉइड सेवा देने की क्या अनुमति है? – videoguy
@ videoguy: कोई अनुमति नहीं है। प्रक्रिया रूट (या व्यवस्थापक विशेषाधिकारों के साथ उपयोगकर्ता खाते के रूप में) के रूप में चलनी चाहिए। – CommonsWare