Итак, у меня есть приложение, которое связывает устройства Android в одной локальной сети друг с другом. Они периодически разговаривают друг с другом, подключаясь к серверу, устанавливая соединение с серверным сокетом, обмениваясь данными и закрывая соединение (каждую минуту).
Почему-то первые пару попыток работает хорошо, а потом они каждый раз начинают возвращать отказ в подключении. Кто-нибудь может сказать мне, что может быть причиной?
Мой код очень прост:
server = new ServerSocket(0);
while(true) {
Socket clientSocket = server.accept();
Log.d(TAG, "Incoming connection");
handleClient(clientSocket);
}
И при подключении:
Socket s = new Socket(si.getInet4Addresses()[0], si.getPort());
doStuff(s)
У меня есть следующие разрешения:
<manifest>
....
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<application
<activity>
...
<intent-filter>
...
</intent-filter>
</activity>
<service .. />
<receiver >
....
</receiver>
</application>
</manifest>
О, и я должен упомянуть, что все это происходит в сервисе.
handleClient()
? - person   schedule 10.01.2013