【问题标题】:Connecting to a server via Java Socket and ServerSocket Class通过 Java Socket 和 ServerSocket 类连接到服务器
【发布时间】:2018-12-07 02:44:12
【问题描述】:

我有一个非常简单的问题。我正在编写一系列 java 程序,这些程序利用 RSA、El Gamal 等加密函数作为安全类。以便客户端 (Alice) 和服务器 (Bob) 可以安全地通信。但是,我不知道如何使用 java 连接到我的计算机上的服务器。我使用 MAMP 连接到我用 PHP/SQL 编写代码的 Web 服务器,但我不知道它如何使用 Java 工作。具体来说,我收到的启动文件都使用 Java 类 Socket 和 ServerSocket,如下所示:

String host = "localhost";
int port = 7999;
Socket s = new Socket(host, port);
ObjectOutputStream os = new ObjectOutputStream(s.getOutputStream());

对于服务器(鲍勃):

int port = 7999;
ServerSocket s = new ServerSocket(port);
Socket client = s.accept();
ObjectInputStream is = new ObjectInputStream(client.getInputStream());

我将在我的计算机上做什么以通过此代码连接到服务器?

【问题讨论】:

    标签: java security tomcat networking server


    【解决方案1】:

    客户端.java

    import java.io.*;
    import java.net.*;
    
    public class Client {
    
        public static void main(String[] args) throws Exception {
    
            String host = "localhost";
            int port = 7999;
            Socket s = new Socket(host, port);
            ObjectOutputStream os = new ObjectOutputStream(s.getOutputStream());
    
            os.writeObject("Hello World");
            os.close();
        }
    
    }
    

    服务器.java

    import java.io.*;
    import java.net.*;
    
    public class Server {
    
        public static void main(String[] args) throws Exception {
    
            int port = 7999;
            ServerSocket s = new ServerSocket(port);
            Socket client = s.accept();
            ObjectInputStream is = new ObjectInputStream(client.getInputStream());
    
            String str = (String)is.readObject();
    
            System.out.println("Read string: " + str);
    
            is.close();
        }
    
    }
    

    编译

    javac Client.java
    

    javac Server.java
    

    运行服务器(你可以在同一台机器上测试它。)

    java Server
    

    运行客户端(在另一个终端或 DOS 提示符下。)

    java Client
    

    在服务器上你应该看到:

    server$ java Server 
    Read string: Hello World
    server$ 
    

    【讨论】:

    • 我这样做的时候是否在我的机器上运行一个 tomcat 服务器?
    • 这在没有 Tomcat 的情况下运行。这是两个独立的 Java 应用程序。
    • 如果你想在 Tomcat 中运行(作为一个 servlet?),那就有点不同了。我可以尝试举一个例子,但这会涉及更多。同时,您可以尝试搜索以下内容:java Servlet using ObjectInputStream。您发布的代码使用 java 套接字和对象流直接从 java 客户端向 java 服务器发送 java 对象。如果您想使用 servlet,您可能需要查看 HTTP 协议的开销以及您需要从 HttpServletRequest 中获得什么。
    • 没关系。你回答的正是我需要做的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 2019-09-24
    相关资源
    最近更新 更多