java - W/System.err : java.net.ConnectException:连接超时

标签 java android sockets heroku

我正在尝试连接到 Heroku 上的节点服务器应用程序:

const express = require('express')
const path = require('path')
const PORT = process.env.PORT || 5000

var app = express();

app.get('/', function (req, res) {
   res.send('Hello World');
})

var server = app.listen(PORT, function () {
   var host = server.address().address
   var port = server.address().port

   console.log("Example app listening at http://%s:%s", host, port)
})  

但是,它总是超时:

    SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
09-01 03:24:43.813 24507-25053/myapp.ca.my_init_application W/System.err: java.net.ConnectException: Connection timed out

将目标服务器更改为 Google.com 也无济于事。

安卓

private void sendMessage(final String msg) {

        final String serverName = "myapp-node-js.herokuapp.com";

        final Handler handler = new Handler();
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {

                try {

                    Socket clientSocket = new Socket(serverName, new ServerSocket(0).getLocalPort());

                    OutputStream out = clientSocket.getOutputStream();

                    PrintWriter output = new PrintWriter(out);

                    output.println(msg);
                    output.flush();
                    BufferedReader input = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
                    final String st = input.readLine();

                    handler.post(new Runnable() {
                        @Override
                        public void run() {

                            if (st.trim().length() != 0)
                                Log.v("MyApp", "\nFrom Server : " + st);
                        }
                    });

                    output.close();
                    out.close();
                    clientSocket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });

        thread.start();
    }  

为什么连接不成功?

我设置了互联网选项:

<uses-permission android:name="android.permission.INTERNET" />

提前谢谢大家。

最佳答案

套接字尚未绑定(bind),因此如果您尝试此 new ServerSocket(0).getLocalPort();,它将返回 -1。你需要保持端口号的对称实习生,所以使用

Socket clientSocket = new Socket(serverName,5000);

关于java - W/System.err : java.net.ConnectException:连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52123974/

相关文章:

android - 如何使用 url 创建 Sprite?

c++ - SSL_connect() 不适用于 select()

c++ - 在 boost async_receive_from 上定义超时

c++ - 套接字和映射的内存泄漏

java - 当我在 CalendarView 中选择日期时,calendarView.getDate() 不会改变

java - 游戏服务器MySQL连接

具有多客户端通信的 Java 服务器。

java - 延长 Lollipops "heads-up"通知持续时间

Android,适配器中的 RelativeLayout 导致错误

java - 将 null 插入 MS Access 中的日期/时间字段 -