java android编程..从用户获取ip地址

时间:2016-04-15 23:48:40

标签: java android

我编写了Android代码,用于从EditText中的用户获取IP地址,然后通过用户在EditText中获取的计算机ip进行通信。

这是我的代码,当我点击按钮时没有任何工作:

public class MainActivity extends Activity {

Button b;
EditText et;
TextView tv;
private Socket socket;
int PORT = 4003;
String HOST; //HOST = " 192.168.2.1"

private Handler textview_handler_thread;
class ClientThread implements Runnable {

    @Override
    public void run()
    {
        try {
            socket = new Socket(HOST, PORT);
            Message msg = null;
            while(true) {      
                msg = textview_handler_thread.obtainMessage();
                msg.obj = "Process Completed Succesfully";
                textview_handler_thread.sendMessage(msg);
            } 
        }
        catch (Exception e){
            e.printStackTrace();
        } 
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    b = (Button) findViewById(R.id.button1);
    et = (EditText) findViewById(R.id.editText1);
    HOST = et.getText().toString();

    new Thread(new ClientThread()).start();

    textview_handler_thread = new Handler() {
        public void handleMessage(Message msg) {
            Object o = msg.obj;

            if (o == null) 
                o = "";

            TextView tv = (TextView)findViewById(R.id.textView1);
            tv.setText(o.toString());
        }
        };

    b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            try {
                DataOutputStream output_to_server = new DataOutputStream(socket.getOutputStream());
                String client_str = et.getText().toString();
                    output_to_server.writeBytes(client_str);
                    output_to_server.flush();

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });

}

HOST变量中的问题是它包含来自用户的IP地址。 起初我写了HOST =“192.168.2.1”; 但现在我希望用户这样做。

注意:如果我写了HOST =“192.168.2.1”;它成功执行。当我分配HOST的值来编辑文本时CANT与计算机通信为什么?

1 个答案:

答案 0 :(得分:1)

那是因为您在OnCreate中将值分配给HOST。那时,那个文本框仍然是空的。

您可能希望在OnClick事件中执行此操作

String client_str = et.getText().toString();
HOST = Client_str;

此时,HOST应包含用户键入的IP地址。此外,您不应该在OnCreate上启动该线程。那时,HOST还没有。