Android模拟器无法连接到本地主机上的socket.io

时间:2019-08-09 19:35:45

标签: android sockets socket.io

我的js代码:

const   express = require('express'),
        http = require('http'),
        app = express(),
        server = http.createServer(app),
        io = require('socket.io').listen(server);

app.get('/', (req, res) => {
    res.send('Chat Server is running on port 3000');
});

io.on('connection', (socket) => {
    console.log('user connected');
});

server.listen(3000, ()=>{
    console.log('Node app is running on port 3000')
});

如果我在浏览器中打开http://127.0.0.1:3000,则会收到消息

但是在android中,我无法连接到套接字

我的android代码:

try {
            Socket socket = IO.socket("http://127.0.0.1:3000");
            socket.connect();
            Log.i("errorCheck", "ID: "+socket.id());
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }

我测试了其他IP,例如:10.0.2.2、10.0.2.3,localhost,调制解调器配置IP,我的真实IP

和4444、8080端口

但是不行

我使用genymotion模拟器

1 个答案:

答案 0 :(得分:2)

android模拟器还具有自己的本地主机,因为它的行为就像一个单独的实体,因此它将无法直接从主机(您的计算机)访问本地主机。如果要从计算机访问本地主机,请使用10.0.2.2,这是主机回送接口的特殊别名。

Set up Android Emulator networking