【问题标题】:Android emulator not connect to socket.io on localhostAndroid模拟器未连接到本地主机上的socket.io
【发布时间】:2019-08-10 04:41:01
【问题描述】:

我的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中我无法连接到socket

我的安卓代码:

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, modem config ip, my real ip

还有4444、8080端口

但不工作

我用的是genymotion模拟器

【问题讨论】:

    标签: android sockets socket.io


    【解决方案1】:

    android 模拟器也有它自己的 localhost,因为它表现为一个单独的实体。因此它不能直接从主机(您的计算机)访问 localhost。如果您想从您的计算机访问 localhost,请使用 10.0.2.2,它是您的主机环回接口的特殊别名。

    Set up Android Emulator networking

    【讨论】:

      猜你喜欢
      • 2020-12-18
      • 2021-02-26
      • 1970-01-01
      • 2021-05-07
      • 2013-07-14
      • 2021-04-03
      • 2014-10-15
      • 1970-01-01
      • 2019-12-23
      相关资源
      最近更新 更多