如果我想在PC和Android模拟器之间建立套接字连接,那么正确的IP地址是什么?

时间:2016-06-29 02:49:15

标签: android sockets

我正在尝试使用pc作为服务器和Android模拟器作为客户端。我想从服务器向客户端发送消息。这是代码: 服务器:

    import java.net.*;
    import java.io.*;
    public class SimpleServer {
        public static void main(String[] args) 
            throws IOException
        {
            ServerSocket ss = new ServerSocket(30000);
            while(true) {
                Socket s = ss.accept();
                OutputStream os = s.getOutputStream();
                os.write("Hello World!\n".getBytes("utf-8"));
                os.close();
                s.close();
             }
        }
    }

客户端:

    public class MainActivity extends AppCompatActivity {
        EditText text;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            text = (EditText)findViewById(R.id.messg);

           new Thread() {
                @Override
                public void run() {
                    try {
                        // What ip address should be chosen here?
                        Socket socket = new Socket("xxx.xxx.xxx.xxx",30000); 
                        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                        String line = br.readLine();
                        text.setText(line);
                        br.close();
                        socket.close();
                    }
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }.start();

        }
    }          

我使用localhost:127.0.0.1在同一台计算机上测试了服务器和客户端的代码并且它可以工作。但是,我无法弄清楚客户端是否是genymotion在同一台计算机上启动的模拟器,客户端套接字连接的正确IP地址是什么?

我正在使用wifi,我尝试了wlan0的IP地址(由ifconfig找到),127.0.0.1,以及我的计算机的公共IP地址(由Google找到),但是客户端模拟器没有显示来自服务器的消息。

2 个答案:

答案 0 :(得分:1)

如果您想参考运行Android模拟器的计算机,请改用IP地址 10.0.2.2 。您可以阅读更多相关信息here

答案 1 :(得分:0)

您是否尝试过计算机的局域网IP地址?在你的ifconfig中你必须得到一些东西

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ...
    inet 192.168.43.238

所以使用192.168.43.238