W / System.err: java.net.ConnectException: истекло время ожидания соединения - PullRequest
0 голосов
/ 01 сентября 2018

Я пытаюсь подключиться к приложению Node-сервера на 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 тоже не помогает.

Android

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" />

Спасибо всем заранее.

1 Ответ

0 голосов
/ 01 сентября 2018

Сокет еще не был связан, поэтому, если вы попробуете это new ServerSocket(0).getLocalPort();, он вернет -1. вам нужно сохранить внутренности симметрии номера порта, поэтому используйте

Socket clientSocket = new Socket(serverName,5000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...