因此,我为套接字服务器和客户端提供了两个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有人能给我一个如何解决这个问题的线索吗?必须感谢你的帮助。谢谢(._.)
发布于 2012-03-07 13:12:09
据我所知,云提供商不允许打开低级别套接字(甚至很少允许使用WebSocket )。他们通常在Java应用服务器前面使用代理。云提供程序通常用于HTTP应用程序。
如果您真的想使用套接字,请离开当前的云提供商,在Amazon上打开一个帐户。
https://stackoverflow.com/questions/9593375
复制相似问题