繁体   English   中英

是否可以在线托管通过ServerSocket充当服务器的Java类?

[英]Can a Java class that acts as a server via ServerSocket be hosted online?

我已经做了一个非常简单的命令聊天Java基础应用程序。

尽管项目由一个充当服务器,另一个作为客户端,该客户端发送套接字并从服务器接收套接字。

但是Server不是Servlet或任何其他类型的服务器,它只是一个简单的简单Java类,可以通过ServerSocket充当服务器...

如果可以在线托管(最好是云托管),我将如何知道供客户端使用的新主机名??? 端口会更改为吗???

服务器类

public class ServerDoor {
    public static void main(String args[]) throws IOException {
        final int portNumber = 81;
        ServerSocket serverSocket = new ServerSocket(portNumber);
        while (true) {...}
    }
}

客户端

public static void main(String args[]) throws IOException {
    final String host = "localhost"; // the host name!
    final int portNumber = 81;
    System.out.println("Creating socket to '" + host + "' on port " + portNumber);

    while (true) {...}
}

您可以在Windows Azure或Amazon EC2或其他云托管公司中托管服务器。 客户端需要连接的主机名是服务器的IP地址或DNS名称。 也许将您的客户端更改为从命令行参数接受主机名和端口,而不是对本地主机进行硬编码。

服务器绑定到的端口必须与客户端连接到的端口相同。 考虑也为此使用命令行参数。

Java套接字教程也非常有用。

最简单的入门方法是从云托管公司创建VM 您可以使用SSH远程访问您的云VM ,以便运行命令。 如果您不熟悉命令行应用程序,则应进行一些研究。 您将必须知道如何从命令行运行Java程序。

拥有虚拟机后,使用SCP或其他复制实用程序将Server Java jar或.class文件复制到云虚拟机上。 然后,您可以从云VM运行服务器程序。 确保您的云VM允许来自您要使用的端口的连接。 您可以从托管虚拟机设置的云中打开或关闭虚拟机的端口。

一旦服务器程序在云VM中运行,就可以连接到VM的主机名和端口。 主机名将是您创建的VM实例的域名。 创建虚拟机时,您可能必须给它起一个唯一的名称。 它也可能与您用于SSH进入计算机的名称相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM