如何接受 TCP 请求进入 Spring Boot 应用程序?

Posted

技术标签:

【中文标题】如何接受 TCP 请求进入 Spring Boot 应用程序?【英文标题】:How to accept TCP requests into Spring Boot app? 【发布时间】:2020-02-29 23:46:45 【问题描述】:

如何在 Spring Boot 应用程序中接受 TCP 协议? HTTPTCP 上工作,但我需要接受较低级别的协议。

谁能告诉我如何实现它的路线或提示?

ControllerServiceRepository架构的HTTP连接一样吗?

【问题讨论】:

嗯...您在使用 Cloud Foundry 吗?这不是 Spring Boot 问题,该链接中唯一的 Spring Boot 是启用了 HTTPS 的标准 hello world Spring Boot Web 应用程序。 你知道HTTP运行在TCP之上,对吧? @Gimby 是的,我使用 Spring Boot,问题中 Cloud Foundry 的唯一原因是因为我找不到与 Spring Boot 和 TCP 相关的任何内容。 @Kayaman 是的,我知道这一点。但我需要接受裸 TCP。 @DmytroChasovskyi 这是因为非 http tcp 路由是 Cloud Foundry 的一项功能......与 Spring 完全无关。 【参考方案1】:

您需要通过实现 Spring Boot 的 CommandLineRunner 接口来使用 Socket 编程来编写程序。程序的 Socket 部分使用 TCP 连接到服务器并开始接受请求,然后按照您需要的格式转换二进制消息并进行其余处理。

如果你想创建一个服务器,那么在你的程序中使用 ServerSocket 来接受来自客户端的连接。

【讨论】:

【参考方案2】:

你对这个命令没问题???

$ cf create-route pcfdev-space tcp.local.pcfdev.io --random-port

Spring 引导的一般情况: HTTP 路由包括一个域、一个可选的主机名和一个可选的上下文路径。 cfapps.io、myapp.cfapps.io 和 myapp.cfapps.io/products 都是 HTTP 路由的示例。应用程序应该监听由 $PORT 环境变量定义的 localhost 端口,在 Diego 上是 8080。例如,对 myapp.cfapps.io 的请求将被路由到位于 localhost:8080 的应用容器

来源:https://docs.run.pivotal.io/devguide/deploy-apps/routes-domains.html

【讨论】:

以上是关于如何接受 TCP 请求进入 Spring Boot 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot 中实现部分 GET 请求?

为啥spring boot应用程序的main方法已经返回,但应用程序仍然可以接受请求? [关闭]

如何在 Spring Boot 中编写控制器以接受格式 - /policies?page=2&limit=10 的查询字符串

为啥我登录后无法进入管理 REST API 请求映射 - Spring Boot

Spring Boot 嵌套动态 json 请求映射到 pojo

如何在 Spring Boot 中将嵌套的 JSON 对象映射为 SQL 表行