[英]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.