通过大量文章和 Stack Overflow 问题,我终于能够成功将 Java Socket 绑定(bind)到 Openshift 网站上的端口(端口 8000)。
我知道绑定(bind)成功,因为没有抛出异常,并且我能够轮询 Socket 的端口号。使用 rhc 客户端工具转发端口后,我还可以从客户端应用程序成功连接到套接字。
问题是,如何在没有端口转发的情况下连接到服务器套接字?我无法从任何其他计算机或没有端口转发的我自己的计算机连接到服务器。
这些是我迄今为止尝试过的事情:
- 连接到端口 8000 上的“localhost”,该端口在端口转发后起作用。
- 连接到端口 8000 的网站 URL,该端口始终返回 null。
- 在端口 8000 连接到网站 IP,导致出现“连接被拒绝:连接”错误。
客户端代码:
InetAddress ip = InetAddress.getByName("localhost");
//Also tried '127.5.8.129' which openshift says is the website IP, and the website URL itself.
Socket socket = new Socket(ip, 8000);
PrintWriter out = new PrintWriter(socket.getOutputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out.println("Hello World");
out.flush();
System.out.println(in.readLine());
socket.close();
编辑:我还可以将服务器套接字绑定(bind)到端口 8443,但仍然无法远程访问它。
最佳答案
您需要绑定(bind)到端口 8080,然后通过端口 8000 上的公共(public) url 访问您的应用程序。查看此知识库文章,了解有关端口如何在 OpenShift 上工作的更多信息:https://help.openshift.com/hc/en-us/articles/203263674-What-external-ports-are-available-on-OpenShift-
关于使用 Openshift 的 Java 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27976623/