【发布时间】:2016-10-03 11:59:16
【问题描述】:
为了启动我的服务器/客户端,我将客户端作为命令行参数传递给服务器,两个进程都是 startet。
java -cp bin this.is.an.example.server "java -cp C:\this\is\another\example\bin\client main.Client"
为了舒适地调试它,我通过在服务器运行配置中添加客户端作为参数来安装 eclipse。有效。不幸的是,这样我只能调试服务器。我无法在运行时访问客户端,因为它在另一个进程中运行。
所以我开始寻找解决方案并找到了一些类似的教程,例如tutorial_1
我在命令行中添加了java -cp bin this.is.an.example.server "java -Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:56111,suspend=y -cp C:\this\is\another\example\bin\client main.Client"
我在 Eclipse 中向我的客户添加了远程调试配置,如图 6 所示。
当我在 Eclipse 中调试时,它说
等待 vm 连接到端口 56111
但什么也没发生。
所以这是我的问题:
- 我做对了吗?还是有另一种可能更简单的方法来调试我的客户端?有什么建议吗?
- 如果远程调试没问题。是否可以通过将参数传递给我的服务器来启动远程调试,然后服务器启动客户端
Process process = Runtime.getRuntime().exec(command);?
【问题讨论】:
-
客户端和服务器一起启动似乎很尴尬。客户端/服务器架构的整个想法是这两者是相互独立的。所以我会质疑你的第一句话。相反:你启动你的服务器。然后你开始你的客户;并且您将服务器的IP地址和端口号提供给客户端;以便它可以连接到该服务器。当然,对于初始测试,IP 和端口总是相同的,因此在 Eclipse 中为您的客户端设置运行时配置应该很简单。
-
另外:安装和使用 eclipse 只是为了启动 java 项目听起来像 overkill。您应该从 Eclipse 中完成“所有开发工作”;或者根本不使用它。如果您更关注“我想学习如何在没有 IDE 的情况下做事”……那么您可以编写一些入门启动客户端/服务器的脚本 ....
-
是的,这确实很尴尬,但我以这种方式继承了它,现在必须找到一种让它工作的方法,......再次。据说它正在/正在工作。我称它为服务器客户端,因为主程序就像一个管理所有“客户端”之间通信的“服务器”,顺便说一句,我没有安装 Eclipse 来启动“服务器/客户端”,但调试它还有一些其他问题
-
老实说,我一直认为在 address 字段中应该只有端口。在客户端连接到服务器的上下文中,套接字传输地址的格式为“
: ”,其中 是主机名, 是它连接或侦听的套接字端口号。在服务器等待客户端连接的上下文中,地址仅由端口号组成(主机名是隐含的)。来自:docs.oracle.com/javase/1.5.0/docs/guide/jpda/… -
你继承了它。这是否意味着……它现在是你的了吗?这是一个非常基本的问题。你看,如果你现在对这件事负责,你想对从一开始就坏掉的事情负责吗?或者退后一步是否有意义?并在投入更多时间之前解决这些基本问题?也许是,也许不是。只是试图让您意识到自己的真正最重要的优先事项。
标签: java eclipse remote-debugging