сокет java сервера в облачном сервере - PullRequest
0 голосов
/ 07 марта 2012

Итак, у меня есть два класса java для сокет-сервера и клиента:

Для сервера:

System.out.println("Server started:");
    ServerSocket server = new ServerSocket(1935, 0, InetAddress.getByName("localhost"));
    Socket connection = new Socket();
    while(active){
        connection = server.accept();
        printTimeStamp();
        InputStream in = connection.getInputStream();
        while(in.available() == 0){
            //waiting till message is complete
        }
        MessageDecode(in);
    }

MessageDecode - это просто внутренний метод, который читаетвходные потоки и сохраняют его где-то

для клиента

Socket connectionSocket = new Socket();
        InetAddress address = InetAddress.getByName("THE_CLOUD_SERVER_IP");
        SocketAddress sAddress = new InetSocketAddress(address, 1935);
        connectionSocket.setKeepAlive(true);
        connectionSocket.setTcpNoDelay(true);
        connectionSocket.connect(sAddress, 2000);
        OutputStream os = connectionSocket.getOutputStream();
        os.write("HELLO SERVER".getBytes());
        os.close();
        System.out.println("sent");

, когда я запускаю оба на локальном хосте, это работает как чудо, но когда я запускаю классна облачный сервер я получаю исключение тайм-аута java.net.SocketTimeoutException: connect timed out

, даже когда por слушает, я знаю его прослушивание, потому что когда я запускаю приложение и выполняю netstat -anp, я получаю:

tcp        0      0 127.0.0.1:1935              0.0.0.0:*                   LISTEN      PID/java

Может кто-нибудь подсказать, как это решить?Ваша помощь должна быть оценена.Спасибо (._. ')

1 Ответ

0 голосов
/ 07 марта 2012

Насколько мне известно, облачные провайдеры не разрешают открывать сокеты низкого уровня (даже WebSocket редко разрешается). Обычно они используют прокси перед сервером приложений Java. Облачные провайдеры часто используются для HTTP-приложений.

Если вы действительно хотите использовать сокеты, оставьте своего текущего облачного провайдера и откройте учетную запись в Amazon EC2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...