使用模拟器的客户端IP地址

时间:2014-02-13 15:44:46

标签: sockets client

我目前正在为我的客户端和服务器编写此代码,

我想用我的模拟器测试它,但我被卡住了。

这是我应该使用的正确IP地址吗?

socket = new Socket("10.0.2.2", 6000);

如果我想用我的手机测试一下,我应该使用什么IP地址?

感谢。

2 个答案:

答案 0 :(得分:0)

如果你想在服务器/客户端之间发送消息,这里是我之前做过的示例代码。

请参阅下面的代码,随时发表评论!

另外,这是使用模拟器进行模拟时使用的正确IP地址。

此外,请不要忘记在宣言中将您的权限更改为“android.permission.INTERNET”。

=================================myClient==================================

    package com.example.myclient;

    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.net.Socket;
    import java.net.UnknownHostException;

    import android.os.Bundle;
    import android.app.Activity;
    import android.util.Log;
    import android.view.Menu;
    import android.view.View;
    import android.widget.Button;

    public class MainActivity extends Activity {

        /** Manifest --> uses permission --> "android.permission.INTERNET" */
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button btn = (Button) findViewById(R.id.btn);
            btn.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {

                    class MyThread extends Thread {
                        @Override
                        public void run() {
                            super.run();
                            Log.d("client", "thread is running...");
                            String str = "Do you want to eat hamburger?";
                            Socket socket;
                            try {
                                socket = new Socket("10.0.2.2", 6000);
                                ObjectOutputStream out = new ObjectOutputStream(socket
                                        .getOutputStream());
                                ObjectInputStream in = new ObjectInputStream(
                                        socket.getInputStream());
                                out.writeObject(str);
                                String rcv = (String) in.readObject();
                                Log.d("client", "Server :" + rcv);
                                out.close();
                                in.close();
                                socket.close();
                            } catch (UnknownHostException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            } catch (ClassNotFoundException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
                    }

                    MyThread t = new MyThread();
                    t.start();

                }
            });

        }

    }



============================MyServer========================================

import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class MyServer {

    public static void main(String[] args) throws IOException, ClassNotFoundException {
        ServerSocket server = new ServerSocket(6000);
        System.out.println("waiting.....");
        while (true) {
            Socket socket = server.accept();
            System.out.println("a client has connected...");
            InputStream in = socket.getInputStream();
            OutputStream out = socket.getOutputStream();

            ObjectInputStream objIn = new ObjectInputStream(in);
            ObjectOutputStream objOut = new ObjectOutputStream(out);

            String str = (String) objIn.readObject();
            System.out.println("client : " + str);
            objOut.writeObject("No, I'm on a diet!!!");

            objIn.close();
            objOut.close();
            socket.close();
        }
    }
}

答案 1 :(得分:0)

10.0.2.2将是您使用模拟器的正确IP。如果您在计算机上开发(同一台计算机上的客户端和服务器),则127.0.0.1将是IP。正如你所说,你想在你的手机上测试它,运行以下代码,你将获得你的IP(如果你在计算机上它也会工作):

public class net
{
  net() throws UnknownHostException
 {
   InetAddress ia=InetAddress.getLocalHost();
   System.out.println(ia);

   ia=InetAddress.getByName("local host");
   System.out.println(ia);
 }
 public static void main(String args[])throws UnknownHostException
    {
   net a=new net();
    }
  }