java - 服务器监听多个端口 [Java]

标签 java http networking

我正在尝试弄清楚如何创建一个 java 程序,该程序可以监听多个端口并根据客户端与哪个端口通话执行不同的操作。

我已经看到并理解了基本的客户端-服务器程序: http://systembash.com/content/a-simple-java-tcp-server-and-tcp-client/

重申一下,我想创建同样的关系,但不是服务器只监听一个端口并在接收到输入时执行一个操作,我希望它监听多个端口并根据客户端连接的端口和将数据发送到,执行不同的操作。

我希望将来每个端口都能接受 GET 和 PUT 命令,但现在我只是想弄清楚如何设置服务器的基本结构,以便能够收听多个端口。我试过谷歌搜索,但似乎找不到太多,因此非常感谢任何帮助。

提前致谢。 -安东尼

最佳答案

您提到的教程非常基础。不使用线程就无法编写任何合理的服务器。为了拥有两个服务器套接字,您必须为每个端口生成一个新线程,如下所示(伪代码):

new Thread() {
    public void run() {
        ServerSocket server = new ServerSocket(6788);
        while(true) {
            Socket client1 = server.accept();
            //handle client1
        }
    }.start();

和(注意不同的端口):

new Thread() {
    public void run() {
        ServerSocket server = new ServerSocket(6789);
        while(true) {
            Socket client1 = server.accept();
            //handle client2
        }
    }.start();

有了 client1client2 套接字,您可以分别处理它们。此外,处理客户端连接应该在不同的线程中完成,以便您可以为多个客户端提供服务。当然,此代码引入了很多重复项,但请将此作为起点。

总结一下 - 如果您的目标是实现 HTTP GET 和 PUT,请使用 servlet 并摆脱所有这些麻烦。

关于java - 服务器监听多个端口 [Java],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5021725/

相关文章:

javascript - Meteor.http.get 请求 -> 错误 : Hostname/IP doesn't match certificate's altnames

java - java与google-app-engine通信时报错302

google-chrome - Chrome 网络计时的真正含义是什么以及影响每个计时长度的因素是什么?

java - Android中如何正确处理AsyncTask取消?

java - 如何在运行时动态连接到数据源?

java - struts2 中 HttpServletResponse 的任何其他内置方法

java - Hazelcast无法与SqlPredicate和可选字段上的索引一起正常使用

javascript - 导航跟随滚动

python - 在 Python 中处理多个网络接口(interface)

python - 连接到服务器的客户端IP