在Android中的InetAddress.getByName()中使用String变量

时间:2014-12-31 11:00:12

标签: java android

在我的Android应用中,我想使用
连接到IP ipaddr = InetAddress.getByName("192.168.1.116");
现在,问题在于该IP由于DHCP而不断变化,并且因为设备需要在不同的场合连接到不同的路由器。因此,我在开头添加了一个文本框对话框,允许用户手动输入IP。

AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("DEVICE IP");
alert.setMessage("Enter DEVICE IP");
final EditText input = new EditText(this);
input.setRawInputType(Configuration.KEYBOARD_12KEY);
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
    device_ip = input.getText().toString();
    Log.d("MY_LOGS", "IP SET TO " + device_ip);
            Toast.makeText(MyActivity.this, "DEVICE IP: " + device_ip ,Toast.LENGTH_LONG).show();
        }
    });
alert.show();  

现在,问题是我从用户那里获得此String的IP后,我正在这样做

try {
        ipaddr = InetAddress.getByName(device_ip);
        Log.d("MY_LOGS",  "ipaddr SET TO: " + ipaddr.toString());
} catch (Exception e) {
        Log.d("MY_LOGS",  e.getMessage());
}  

但是,在这种情况下,应用程序不会将消息发送到IP。

将IP手动设置为字符串并将IP作为字符串变量输入可能有什么区别?

各种案例的日志:


device_ip的日志:

IP SET TO 192.168.1.116


如果手动输入IP,则记录日期:

ipaddr SET TO: 192.168.1.116


如果对IP使用String变量,则记录:
ipaddr SET TO: localhost

0 个答案:

没有答案