0

そのため、同じローカル ネットワーク内の Android デバイスを相互に通信するアプリケーションがあります。それらは、serversocket への接続を確立し、データを交換し、接続を閉じることにより、定期的に相互に通信します (毎分)。

何らかの理由で、最初の数回の試行ではうまく機能し、その後毎回拒否された接続を返し始めます。誰が理由を教えてくれますか?

私のコードは非常に単純です:

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>

ああ、それはすべてサービスで発生することに言及する必要があります。

4

0 に答える 0