0

我正在自学 Java,我正在使用 Deitel 的书,因为它受到强烈推荐,但我遇到了一些麻烦。

所以我尝试复制 Java: How to Program 一书中的图 27.5-8。我想我需要 0.5 数字,因为它是服务器,而 0.7 数字因为它是客户端。所以我在同一个项目中创建了它们,然后组合了它们的主要类(图 .6 和 .8),这样当我运行程序时它们会同时启动服务器和客户端。但是,当我告诉 netBeans 编译并运行它时,它会打开我为服务器和客户端设置的窗口,但 textFields 不会启用(因为它们应该在收到连接时启用。)并且尽我所能告诉他们没有相互连接。

server.java 和 client.java 文件应该与书中的完全相同,所以我想我在混合主文件以启动它们时一定搞砸了。这是我的组合主文件。也许我在这里做错了什么?

package server_client;
import javax.swing.JFrame;

public class Main {

    public static void main(String[] args) {
        Server application = new Server(); //create server
        Client applicationClient; //declare client application

        //if no command line args
        if (args.length==0)
            applicationClient = new Client ("127.0.0.1"); //connect to localhost
        else
            applicationClient = new Client (args[0]); //use args to connect

        application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        applicationClient.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        application.runServer(); //run server application
        applicationClient.runClient(); //run client application
    }//end main
}//end class Main
4

2 回答 2

0

你把事情搞混了。让我们从头开始。首先,这是您创建简单 UI 的方式。

public static void main(String[] args){
    JFrame frame = new JFrame(); // This will be holding your future buttons

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setTitle("Request Generator");
    frame.setSize(300, 300); // Size x = 300, size y = 300
    frame.setLocationRelativeTo(null); // Puts the frame in the middle of the screen

    frame.setVisible(true); // Without this line of code, the frame won't show
}

但我不建议在这种情况下创建用于测试目的的 UI,因为它非常耗时且没有必要。请改用控制台。您可以像这样在控制台中输出任何内容:

System.output.println("Hello, world!");

甚至是一个变量,比如一个数字。

int number = 10;
System.output.println("Variable number has value: " + number);

其次,我建议您将您的客户端和服务器分成两个独立的项目,并分别启动它们。或者更好的是,如果你愿意,我可以给你一个客户端/服务器连接的小例子。因为,就个人而言,我以前从未遇到过这种实现。

于 2013-10-31T00:24:19.220 回答
0

可能很难解决。

有一个名为 windows 的实用程序netstat,它将显示您的所有网络连接。

学习如何使用调试器也会有所帮助。

一种可能性是在 GUI 检查连接之前正在建立连接,因此 GUI 不知道连接存在。

尝试在一个应用程序中启动服务器,在另一个应用程序中启动客户端。

于 2013-10-31T00:25:34.000 回答