首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >云服务器中的java服务器套接字

问云服务器中的java服务器套接字
EN

Stack Overflow用户
提问于 2012-03-06 23:07:27
回答 1查看 1.1K关注 0票数 0

因此,我为套接字服务器和客户端提供了两个java类,如下所示:

服务器的:

代码语言:javascript
复制
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只是一个读取输入流并将其存储在某个地方的内部方法。

客户端

代码语言:javascript
复制
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时,就会得到:

代码语言:javascript
复制
tcp        0      0 127.0.0.1:1935              0.0.0.0:*                   LISTEN      PID/java

有人能给我一个如何解决这个问题的线索吗?必须感谢你的帮助。谢谢(._.)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-07 13:12:09

据我所知,云提供商不允许打开低级别套接字(甚至很少允许使用WebSocket )。他们通常在Java应用服务器前面使用代理。云提供程序通常用于HTTP应用程序。

如果您真的想使用套接字,请离开当前的云提供商,在Amazon上打开一个帐户。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9593375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档