私はアンドロイドアプリケーションでErlang-Libを使用してサーバーに接続しています。アンドロイド7より小さいアンドロイドデバイスを搭載したサーバーへの接続は正常に動作しています。今私はアンドロイド7.0とソニーZ5とHuaweiメイト9との接続をテストし、それはもはや働いていない。Android 7.0でnullの新しいソケットを作成すると動作しません。
我々はアーラン-Libのに見てみると、我々はクラスでこの呼び出しが表示されますOtpSocketTransport:
あなたがここに見ることができるようInetAddressのは (文字列)ヌルに設定されている/**
* @see Socket#Socket(InetAddress, int)
*/
public OtpSocketTransport(final InetAddress addr, final int port)
throws UnknownHostException, IOException {
socket = new Socket(addr, port);
socket.setTcpNoDelay(true);
}
: in line 286 。 (クラスOtpEpmd、方法:r4_publish)
s = node.createTransport((String) null, EpmdPort.get());
ここ
あなたは、Android 7.0でのデバイスのためのAndroid LogCat出力を見ることができます: (xxxは私が変更された)
02-22 13:00:40.518 31544-31886/com.xxx W/System.err: java.io.IOException: Nameserver not responding on xxx.com when publishing xxx
02-22 13:00:40.518 31544-31886/com.xxx W/System.err: at com.ericsson.otp.erlang.OtpEpmd.r4_publish(OtpEpmd.java:350)
02-22 13:00:40.518 31544-31886/com.xxx W/System.err: at com.ericsson.otp.erlang.OtpEpmd.publishPort(OtpEpmd.java:145)
02-22 13:00:40.519 31544-31886/com.xxx W/System.err: at com.ericsson.otp.erlang.OtpNode$Acceptor.publishPort(OtpNode.java:784)
02-22 13:00:40.519 31544-31886/com.xxx W/System.err: at com.ericsson.otp.erlang.OtpNode$Acceptor.<init>(OtpNode.java:776)
02-22 13:00:40.519 31544-31886/com.xxx W/System.err: at com.ericsson.otp.erlang.OtpNode.init(OtpNode.java:232)
02-22 13:00:40.519 31544-31886/com.xxx W/System.err: at com.ericsson.otp.erlang.OtpNode.<init>(OtpNode.java:196)
02-22 13:00:40.519 31544-31886/com.xxx W/System.err: at com.ericsson.otp.erlang.OtpNode.<init>(OtpNode.java:149)
02-22 13:00:40.519 31544-31886/com.xxx W/System.err: at com.xxx.Manager.ErlifGen.<init>(ErlifGen.java:27)
02-22 13:00:40.519 31544-31886/com.xxx W/System.err: at com.xxx.Manager.Manager$ActivateThread.run(Manager.java:518)
私はOtpEpmdクラスのコードをこれに適合させてから働いています:
if (Build.VERSION.SDK_INT < 24) { //24 is Android 7 Nougat
s = node.createTransport((String)null, EpmdPort.get());
} else {
s = node.createTransport(InetAddress.getByName("localhost"), EpmdPort.get());
}
私の質問は以下のとおりです。なぜそれOKがnullで新しいソケットを作成するには、7より低いアンドロイドのデバイス用に
- のですか?
- なぜそれですかNOT OKアンドロイド7のデバイスでnullで新しいSocketを作成するには?
- JavaからSocketクラスに変更がありましたか?