私はクライアントサーバーアーキテクチャで作業しています。ローカルIPアドレスをサーバーに送信する必要があります。ソケットプログラミングandroid
Socket soc = new Socket(ipaddress,port)
しかし、問題は、私のローカルIPアドレスと上記のコードで取得したアドレスが異なっている、次のとおりです。
は、私は以下のコードを使用して、それを達成します。
どのようにこの難しさを解決するか??? 助けてください。事前に おかげ
私はクライアントサーバーアーキテクチャで作業しています。ローカルIPアドレスをサーバーに送信する必要があります。ソケットプログラミングandroid
Socket soc = new Socket(ipaddress,port)
しかし、問題は、私のローカルIPアドレスと上記のコードで取得したアドレスが異なっている、次のとおりです。
は、私は以下のコードを使用して、それを達成します。
どのようにこの難しさを解決するか??? 助けてください。事前に おかげ
Socket mSocket = new Socket(hostAddress, port)
HOSTADDRESSは、サーバアドレス(リモートホストアドレス)です。 portはIO操作を実行するポート番号です。
サーバーに手動でアドレスを送信することができます: -
try {
InetAddress addr = InetAddress.getByName("hostIpAddress");
Socket mSocket = new Socket(addr,8080);
DataOutputStream dataOutputStream = new DataOutputStream(
mSocket.getOutputStream());
DataInputStream dataInputStream = new
DataInputStream(mSocket.getInputStream());
dataOutputStream.writeUTF(getIpAddress());
String sereverMesssage = dataInputStream.readUTF();
if(sereverMesssage!=null && sereverMesssage.equals("Success")){
Log.i("Socket","Local Ip Address received by server");
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
private String getIpAddress() {
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
return ip;
}
'serverMessage'はnullにできません。同輩が 'readUTF()'を使用すると仮定します。 – EJP
あなたの質問は意味がありません。 'new Socket(...)'はIPアドレスを取得せず、アウトバウンド接続を作成します。いずれにしても、なぜそれを送る必要がありますか?サーバーは、クライアントが接続するとすぐに、受け入れられたソケットから取得できます。 – EJP