【问题标题】:How to set the golang server listener available for only my LAN network如何设置仅适用于我的 LAN 网络的 golang 服务器侦听器
【发布时间】:2016-11-19 19:39:02
【问题描述】:

我正在使用 iris 平台用 go 语言进行编程(我是初学者)。我想让家里的所有电脑都可以访问本地机器之一的 go 服务器。当我使用我的网络 IP (192.168.0.0) 或任何指定的 IP (192.168.0.15) 设置侦听器时,它会给我带来恐慌错误。仅可用 0.0.0.0 或 127.0.0.1/localhost 或 192.168.0.19 - 与 localhost 相同

import "net"

...

ln, err := net.Listen("tcp4", "192.168.12:9999")
    if err != nil{
        panic(err)
    }

    iris.Serve(ln)

...

错误是:panic: listen tcp4 192.168.0.12:9999: bind: The requested address is not valid in its context.

感谢大家的帮助。

【问题讨论】:

  • 我很确定你应该在开始编写服务器之前了解一下网络是如何工作的。您不能将侦听器绑定到未分配给服务器的 IP。
  • 是的,我不太擅长网络。但我也不是在写服务器,我是说我在写,但这不是目标。我需要用 go 语言构建一个应用程序来服务请求。要设置监听器,您只需将 iris.Listen(":9898") 行放在 main 方法的末尾。它将在全球范围内托管服务(0.0.0.0:9898)。我只是想知道有没有办法限制外部访问?或者可能没有来自我的局域网外部的访问?
  • 福斯特我同意@RomanR。其次,如果您使用 WiFi 并在本地主机上运行 go 服务器(就像您的假设一样),您可以从连接到同一 WiFi 的任何设备访问 Web 服务器,方法是从该机器访问本地主机。
  • 感谢小伙子们的帮助和解释。将学习网络。

标签: go server host lan


【解决方案1】:

您应该阅读网络的工作原理,但这里有一些要点可以帮助您入门。

您监听的是端口,而不是 IP 地址。所以无论你使用什么机器作为你的服务器,找到你的本地 IP 地址:

在 Linux 或 Mac 上,您可以通过多种方式进行操作:

ifconfig | grep netmask 并获取您的本地地址,例如。 192.168.x.xx

然后用你的 Go 程序启动你的服务器并监听一个 localhost 端口,比如 8080。

例如。

if err := http.ListenAndServe(":8080", nil); err != nil {
    //handle error
}

然后您可以使用您家中的其他机器访问服务器,假设它们在同一个 Wifi 上。使用其他计算机并通过浏览器访问192.168.x.xx:8080

要在您的 cmets 中回答您的问题,外人无法访问您的本地服务器,除非他们连接到您的 Wifi。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多