W/System.err: java.net.ConnectException: Connection timed ou



我正在尝试连接到 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" />

提前谢谢大家。

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

Socket clientSocket = new Socket(serverName,5000);

最新更新