簡體   English   中英

雲服務器中的Java服務器套接字

[英]java server socket in cloud server

所以我有兩個用於套接字服務器和客戶端的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");

當我在本地主機上都運行它時,它就像一個符咒,但是當我將類運行到雲服務器中時,我得到了timout異常java.net.SocketTimeoutException: connect timed out

即使por在監聽,我也知道它在監聽,因為當我運行應用程序並執行netstat -anp時,我得到:

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

有人可以給我一個解決方法的線索嗎? 感謝您的幫助。 謝謝 (。_。')

據我所知,雲提供商不允許打開低級套接字(甚至很少允許使用WebSocket)。 他們通常在Java應用程序服務器之前使用代理。 雲提供商通常用於HTTP應用程序。

如果您確實要使用套接字,請保留當前的雲提供商並在Amazon EC2上開設一個帳戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM