两个android模拟器同时开,相当于两个连接宿主机的模拟器,彼此ip毫不相关。只与宿主机的无线局域网的ip和ip为10.0.0.2。
服务端
ServerActivity.java
package com.example.twotv;
import android.os.Bundle;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.io.IOException;
import fi.iki.elonen.NanoHTTPD;
public class ServerActivity extends AppCompatActivity {
private MyWebServer server;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
// 直接使用"0.0.0.0"作为主机名
server = new MyWebServer("0.0.0.0", 8080);
server.start(NanoHTTPD.SOCKET_READ_TIMEOUT, false);
Toast.makeText(this, "服务器已启动,端口 8080", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this, "服务器启动失败: " + e.getMessage(), Toast.LENGTH_LONG).show();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (server != null) {
server.stop();
}
}
public static class MyWebServer extends NanoHTTPD {
// 修改构造函数,直接接受主机名字符串
public MyWebServer(String hostname, int port) {
super(hostname, port);
}
@Override
public Response serve(IHTTPSession session) {
String html = "<html><body><h1>Hello from Android Server</h1><p>This is a webpage hosted on Android.</p>&l