Scala 如何指定本地主机之外的IP地址?

Scala 如何指定本地主机之外的IP地址?,scala,finch,Scala,Finch,我正在使用Scala和Finch迈出第一步,并开发一个非常简单的RESTAPI。目前一切正常,但除了localhost之外,我无法提供任何服务,也没有明确的方法来指定它 我已经在谷歌上搜索了一个小时,并仔细阅读了文档,但我一辈子都无法确定如何指定IP地址 object Main extends App with Endpoint.Module[IO] { val egService = new EgService val IPService = new IPService val h

我正在使用Scala和Finch迈出第一步,并开发一个非常简单的RESTAPI。目前一切正常,但除了localhost之外,我无法提供任何服务,也没有明确的方法来指定它

我已经在谷歌上搜索了一个小时,并仔细阅读了文档,但我一辈子都无法确定如何指定IP地址

object Main extends App with Endpoint.Module[IO] {
  val egService = new EgService
  val IPService = new IPService
  val hostIP = IPService.getIP

  def healthCheck: Endpoint[IO, String] = get(pathEmpty) { Ok("OK") }

  def helloWorld: Endpoint[IO, Message] = get("hello") {
    egService.getMessage().map(Ok)
  }

  def sayHello: Endpoint[IO, Message] = get("hello" :: path[String]) {
    s: String =>
      egService.getMessage(s).map(Ok)
  }

  def service: Service[Request, Response] =
    Bootstrap
      .serve[Text.Plain](healthCheck.handle {
        case e: Exception => InternalServerError(e)
      })
      .serve[Application.Json](helloWorld.handle {
        case e: Exception => InternalServerError(e)
      } :+: sayHello.handle {
        case e: Exception => InternalServerError(e)
      })
      .toService

  println(s"Trying to serve $hostIP on port 8080...")
  Await.ready(Http.server.serve(":8080", service))
}
正如我所说的,上面的代码完全按照我的预期工作,我能够卷曲localhost:8080以获得适当的响应,但除此之外,我感到困惑。我试图具体说明:

Http.server.serve(s"$hostIP:8080", service)
但这似乎被忽视了。除此之外,我完全糊涂了。使用http4s时,它非常简单:

BlazeServerBuilder[IO]
  .bindHttp(8080, hostIP)
所以我觉得我肯定错过了一些明显的东西。

有一种发球变体,它采用SocketAddress。它不会为您解析主机名,因为它似乎是通过http4s完成的,所以您需要向它传递一个解析的地址

Http.server.serve(new java.net.InetSocketAddress("192.168.0.1", 8080), service)

请注意,默认情况下,当您仅传递:8081时,服务器将侦听所有接口,包括localhost。

请详细说明在传递服务器侦听套接字的非localhost主机名时,您期望的行为。