java 使用同一台机器用127.0.0.1测试服务端和客户端没有问题,如何设置ip让其它机器做客户端?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 使用同一台机器用127.0.0.1测试服务端和客户端没有问题,如何设置ip让其它机器做客户端?相关的知识,希望对你有一定的参考价值。

127.0.0.1和localhost都是本机内部地址,如果要内网其他机器访问,则需要客户端访问你机器的内网ip(例如:192.168.1.74),查看你的内网ip可通过命令行输入ipconfig命令查看。
如客户端是公网机器则比较复杂,你需要查看你当前的公网ip地址,假如是在家中没有固定ip,可通过访问ip138一类网站查看自身公网地址,然后还要设置你的路由器将你的监听端口映射到你的服务器机ip。
另外在调试时一定注意防火墙放开你的服务端监听端口。
参考技术A 查看你的外网IP地址和端口号,用它们设置就行了 参考技术B 如果是外网,就不好办了。
注意防火墙

当多个java程序在同一台机器上运行时

【中文标题】当多个java程序在同一台机器上运行时【英文标题】:When multiple java programs run on the same machine 【发布时间】:2013-08-26 00:24:24 【问题描述】:

每个 Java 应用程序都将在特定的 Java 虚拟机实例中运行。我真的对以下方面感到困惑,而谷歌搜索让我更加困惑。不同网站上的不同文章。

    如果我有一个用 java 编写的 web 服务,它将需要一个 JVM 实例来运行。那么 JVM 可以成为一个守护进程吗?

    如果是,当我们运行任何其他 java 应用程序时,它会使用这个 JVM 实例还是创建一个新实例?

    任何机器中可用的主内存都是不变的。当我们同时启动 n 个 java 进程而不提供任何初始堆大小时,堆大小如何在进程之间分布?

    是否有进程管理n个JVM实例,还是由操作系统自己管理?

    在 GC 期间发生 stop-the-world 时,其他 JVM 实例(我假设的不同线程)是否会受到影响?

【问题讨论】:

你的第一点取决于容器的实现... +1 以获得详细解释并在提问前研究问题。 【参考方案1】:

1) 如果我有一个用 java 编写的 web 服务,它将需要一个 JVM 实例来运行。那么JVM可以做守护进程吗?

是的,它可以。如何完成取决于操作系统和 Web 服务器容器本身。

2) 如果是,当我们运行任何其他 java 应用程序时,它会使用这个 JVM 实例还是创建一个新实例?

没有。每个 Java 应用程序都使用一个独立的 JVM。

每个 JVM 都是一个单独的进程,这意味着没有共享堆栈、堆等。 (通常,唯一可以共享的东西是只读段,其中包含核心 JVM 和本机库的代码......就像普通进程可能共享代码段一样。)

3) 任何机器中可用的主内存都是恒定的。当我们同时启动 n 个 java 进程而不提供任何初始堆大小时,堆大小如何在进程之间分布?

如果您不指定大小,决定堆多大的机制取决于您使用的 JVM/平台/版本,以及您使用的是“客户端”还是“服务器”模型(对于 Hotspot JVM )。启发式不考虑其他 JVM 的数量或大小。

参考:https://***.com/a/4667635/139985

实际上,最好直接指定堆大小。

4) 是否有进程管理 n 个 JVM 实例或由操作系统自己管理?

两者都不是。 JVM实例的数量由可以启动进程的各种事物的动作决定;例如守护进程脚本、命令脚本、用户在命令行输入命令等。最终,如果操作系统资源耗尽,操作系统可能会拒绝启动更多进程,但 JVM 的处理方式与其他进程没有任何不同。

5) 当 GC 期间发生 stop-the-world 时,其他 JVM 实例(我假设的不同线程)是否受到影响?

没有。 JVM 是独立的进程。它们不共享任何可变状态。垃圾回收在每个 JVM 上独立运行。

【讨论】:

【参考方案2】:
    见How to Daemonize a Java Program? 将创建新的 JVM 实例 与所有其他进程共享内存的方式相同 由 O/S 管理 其他实例不受影响

如果您的实例必须协调它们的工作,您可以创建一个主实例来运行/停止其他实例。

您没有解释为什么需要多个 JVM 实例。可能,单实例会更好。

【讨论】:

以上是关于java 使用同一台机器用127.0.0.1测试服务端和客户端没有问题,如何设置ip让其它机器做客户端?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Angular 在同一台机器上拒绝 Flask 连接

JBoss 和单独的 TomCat 在同一台机器上

IP 127.0.0.1localhost 三者区别

通过gopcap将数据包发送到127.0.0.1

mysql_connect (localhost / 127.0.0.1) 在 Windows 平台上慢

Nginx配置缓存服务器