java - 服务器通过端点监听端口

标签 java sockets server port

我已经使用 Java 中的套接字创建了一个服务器,它已准备好接收 HTTP 请求并发出 HTTP 响应。 服务器位于我的 PC 的端口上,但我只想监听“端点”,我的意思是,我想安装服务器,即安装在 localhost:60802/json 上。 这可能吗?我的代码在这里:

            PORT = Integer.parseInt(portSelection.getText());
            th =  new Thread(new Runnable() {

                //String file;
                @Override
                public void run() {
                    try{
                        server = new ServerSocket(PORT);

                        while(open) {
                            //Accept connections
                            connection = server.accept();

                            in = new BufferedReader(new InputStreamReader(connection.getInputStream())); 

                            try {
                                String line="";

                                while ((line=in.readLine())!= null && !line.equals("")){log.append(line);}                                                              
                                in.close();
                            }catch (Exception e1) {
                            }
                        }
                    }catch (EOFException e1 ) {
                        e1.printStackTrace();
                    }catch (BindException e1) {
                        log.setText("Error. Port "+PORT+" already in use.");
                        open=false;
                    }catch (SocketException e1) {

                    }catch (IOException e1) {
                        e1.printStackTrace();
                    }
                }
            });
            th.start();

我省略了一些部分,所以也许您检测到错误,但代码此时工作正常。

最佳答案

I want to mount the server i.e. on localhost:60802/json. Is this possible?

您可以监听本地主机端口 60802。这将接受该 IP/端口上的所有连接。除此之外,您的服务器代码需要:

  1. 读取 HTTP 请求
  2. 解码第一行以提取请求 URL
  3. 确定 URL 的路径是否与“端点”URL 的路径匹配;即“/json/*”
    • 如果是,则继续
    • 如果否,则发送适当的 HTTP 错误响应;例如404 未找到

(或者,您可以将服务器代码放在反向代理后面,该代理会处理这些内容并重写请求 URL。但这可能会破坏您使用套接字执行此操作的目的......)

<小时/>

但坦率地说,使用套接字编写 HTTP 服务器是一个坏主意。大量的工作,您最终可能会得到一个无法正确实现 HTTP 规范的服务。您最好使用现有的 Web 服务器/容器(例如 Tomcat、Jetty、Glassfish、SpringBoot 等)或 Apache HttpComponents 库。

关于java - 服务器通过端点监听端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51537396/

相关文章:

linux - 将 Linux 控制台输出保存在 txt 中。文件

java - 具有 "my type"列的数据库表

android - 从 Android 到自定义套接字服务器的 SSL/TLS 连接

java.net.SocketException : Socket closed on CentOS (Linux)

http - 转到 IRIS http frameowrk,我无法正确路由

shell - 如何将文件从远程服务器的docker容器复制到本地机器

java - 我如何才能确保在特定文档中更新字段的值?

java - 如何在序列化后获取类型的长度

java - 如何在不重新排序的情况下返回列表中的唯一值

python - UNIX 数据报套接字返回数据给发送者