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