2015-02-17 3 views
0

Я разработал приложение, которое позволяет нескольким игрокам играть вместе в разных играх, таких как шифуми, покер, шахматы и так далее. Он отлично работает на моем локальном хосте. Я бы хотел его опубликовать. Поэтому я решил использовать openshift для этого.Могу ли я использовать «new ServerSocket (0)» с openshift

Но есть проблема.

Кажется, что это исходит из этого утверждения: новый ServerSocket (0). Я делаю это внутри метода doPost HttpServlet.

Не могли бы вы сказать мне, что у меня нет разрешения на это (новый ServerSocket (0)) внутри сервера openshift?

+0

Можете ли вы опубликовать сообщение об ошибке/стеке, которое вы получаете от этого фрагмента кода? Наряду с несколькими особенностями того, что вы пытаетесь достичь? –

ответ

0

Думаю, у вас есть пара вопросов, которые происходят здесь.

Во-первых, когда вы вызываете new ServerSocket(0), он попытается найти сокет, с которым он может связываться, возможно, на 0.0.0.0 (все IP-адреса/интерфейсы) или 127.0.0.1, ни один из которых не является разрешено на OpenShift.

В соответствии с документацией (здесь: http://download.java.net/jdk7/archive/b123/docs/api/java/net/ServerSocket.html) вы можете использовать один из перегруженных методов, чтобы обеспечить привязку IP-адреса, который должен быть вашим OPENHIFT__IP (где могут быть jbosseap, jbossas, wildfly, jbossews и т. Д.). ,

ServerSocket(int port, int backlog, InetAddress bindAddr) 

Ваша вторая проблема немного сложнее, в основном, какие порты вы можете привязать. OpenShift позволяет коду пользователя связываться с портами 15000-20000, в зависимости от того, какие порты не используются другими приложениями или службами. Однако ни один из этих портов не открыт для общедоступного Интернета, все они являются внутренними портами для внутренних коммуникаций, поэтому, если вы пытаетесь подключить к ним клиента, это не сработает. Единственными доступными для доступа портами являются 80/443/8000/8443, и ваше приложение должно привязываться к порту 8080 на вашем OPENHIFT__IP, чтобы быть доступным, используя ваш общедоступный url-адрес app-domain.rhcloud.com. Вы можете ознакомиться с этой статьей, чтобы узнать больше о том, как работают все операции связывания и маршрутизации: https://developers.openshift.com/en/managing-port-binding-routing.html

Надеюсь, это ответ на вопрос, почему эта часть кода не работает.

+0

Спасибо. Я понимаю свою ошибку. Я, хотя новый ServerSocket (0) смог автоматически найти хороший адрес. Но это был идиот. Как это можно сделать. Отсутствие адреса означает использование localhost, что он. Во второй проблеме я больше не могу ее решить, но я попробую. – gero

Смежные вопросы