2016-01-25 3 views
1

Я создал очень простое приложение для чата java.Может ли Java-класс, который действует как сервер через ServerSocket, размещаться в Интернете?

Хотя проект состоит из одного функционирующего как Сервер, а другой - Клиентом, который отправляет сокеты и получает сокеты с Сервера.

Но сервер не является Servlet или любой другой вид, это просто простой обычный класс Java, который функционирует в качестве сервера через ServerSocket ...

Если он может быть размещен в Интернете (облако желательно), как будет я знать новое имя хоста для использования клиентом ??? Будет ли порт изменен на ???

класс Сервер

public class ServerDoor { 
    public static void main(String args[]) throws IOException { 
     final int portNumber = 81; 
     ServerSocket serverSocket = new ServerSocket(portNumber); 
     while (true) {...} 
    } 
} 

Client Side

public static void main(String args[]) throws IOException { 
    final String host = "localhost"; // the host name! 
    final int portNumber = 81; 
    System.out.println("Creating socket to '" + host + "' on port " + portNumber); 

    while (true) {...} 
} 
+0

Это подробные сведения о том, как именно вы собираетесь разместить его. Например, если вы зарегистрируете доменное имя для сервера, вы можете указать это имя в своем клиенте. Вы можете изучить статические методы класса [InetAddress] (http://docs.oracle.com/javase/8/docs/api/index.html), чтобы получить некоторые идеи. –

+0

Есть ли облако, поддерживающее java? Специально не быть сервлетом, а быть простым классом java. Я имею в виду, что я могу загрузить Java-класс в облако и это даже поддерживается? –

+0

Облачные сервисы, такие как Amazon EC2 и Google Compute Engine, предоставляют вам виртуальную машину, на которой вы можете запускать любое программное обеспечение, включая Java. – yole

ответ

0

Вы можете разместить свой сервер в Windows Azure или Amazon EC2 или других облачных хостинг компаний. Имя хоста, к которому должен подключиться ваш клиент, - это IP-адрес или DNS-имя вашего сервера. Возможно, измените свой клиент, чтобы принять имя хоста и порт из аргументов командной строки вместо жесткого кодирования localhost.

Порт, к которому привязан ваш сервер, должен быть таким же, как тот, к которому подключается ваш клиент. Для этого также используйте аргументы командной строки.

Java sockets tutorial также очень полезен.

Самый простой способ начать - создать VM от облачной хостинговой компании. Вы можете использовать SSH to remote into your cloud VM для запуска команд. Если вы не знакомы с приложениями с командной строкой, вы должны изучить его немного. Вам нужно будет знать, как запустить вашу программу Java из командной строки.

После того, как у вас есть виртуальная машина, используйте SCP или другую утилиту копирования, чтобы скопировать файлы сервера Java или .class на вашу виртуальную виртуальную машину. Затем вы можете запустить свою программу Server из виртуальной виртуальной частной сети. Убедитесь, что ваша облачная виртуальная машина позволяет подключаться к порту, который вы будете использовать. Вы можете открывать или закрывать порты для своей виртуальной машины с вашего облачного хостинга VM settings.

Как только программа сервера запущена в вашей виртуальной виртуальной частной сети, вы можете подключиться к имени и порту виртуальной машины. Имя хоста будет именем домена созданного вами экземпляра виртуальной машины. Вероятно, вам придётся присвоить ему уникальное имя при создании виртуальной машины. Вероятно, это будет одно и то же имя, которое вы используете для SSH в машине.

+0

Я могу загрузить сырой класс java в облако ???У меня так много вопросов, потому что сейчас я не могу попробовать облако, как узнать имя моего DNS-сервера ??? Это как доменное имя при загрузке веб-сайта? –

+0

Обновленная информация в комментарии выше – tmajest

+0

Большое вам спасибо! –