{"id":10802,"date":"2023-11-23T11:07:13","date_gmt":"2023-11-23T03:07:13","guid":{"rendered":"http:\/\/xinyiworld.top\/wordpress_it\/?p=10802"},"modified":"2024-04-25T09:19:18","modified_gmt":"2024-04-25T01:19:18","slug":"golang%e7%bd%91%e7%bb%9c%e5%b7%a5%e5%85%b7%e7%b1%bb%e6%95%b4%e7%90%86","status":"publish","type":"post","link":"http:\/\/xinyiworld.top\/wordpress_it\/?p=10802","title":{"rendered":"Golang\u7f51\u7edc\u5de5\u5177\u7c7b\u6574\u7406"},"content":{"rendered":"<ul>\n<li>\u68c0\u6d4b\u7aef\u53e3\u5360\u7528<br \/>\n<a href=\"https:\/\/www.cnblogs.com\/XiaoqiangCanFly\/p\/11820701.html\">https:\/\/www.cnblogs.com\/XiaoqiangCanFly\/p\/11820701.html<\/a><\/li>\n<\/ul>\n<pre><code class=\"language-go\">package main\n\nimport(\n    &quot;os\/exec&quot;\n    &quot;fmt&quot;\n)\n\nfunc main(){\n    fmt.Println(PortInUse(9001))\n}\n\nfunc PortInUse(port int) bool {\n    checkStatement := fmt.Sprintf(&quot;lsof -i:%d &quot;, port)\n    output, _ := exec.Command(&quot;sh&quot;, &quot;-c&quot;, checkStatement).CombinedOutput()\n    if len(output) &gt; 0 {\n        return true\n    }\n    return false\n}<\/code><\/pre>\n<ul>\n<li>\u83b7\u53d6\u5916\u7f51ip\u5730\u5740<br \/>\n<a href=\"https:\/\/transidc.com\/?mod=support&amp;type=detail&amp;id=43\">https:\/\/transidc.com\/?mod=support&amp;type=detail&amp;id=43<\/a> \uff08\u4ec5\u7528\u4e8e\u6d4b\u8bd5\uff09<\/li>\n<\/ul>\n<p><a href=\"https:\/\/httpbin.org\/ip\">https:\/\/httpbin.org\/ip<\/a><\/p>\n<ul>\n<li>ipv4\u6821\u9a8c<\/li>\n<\/ul>\n<pre><code class=\"language-go\">package main\n\nimport (\n    &quot;fmt&quot;\n    &quot;net&quot;\n)\n\nfunc isValidIPv4(ip string) bool {\n    return net.ParseIP(ip).To4() != nil\n}\n\nfunc main() {\n    validIP := &quot;192.168.1.1&quot;\n    invalidIP := &quot;2001:0db8:85a3:0000:0000:8a2e:0370:7334&quot;\n\n    fmt.Printf(&quot;Is %s a valid IPv4 address? %t\\n&quot;, validIP, isValidIPv4(validIP))\n    fmt.Printf(&quot;Is %s a valid IPv4 address? %t\\n&quot;, invalidIP, isValidIPv4(invalidIP))\n}<\/code><\/pre>\n<ul>\n<li>\u5224\u65adhttp\u8bf7\u6c42\u662f\u4ece\u5185\u7f51\u8fd8\u662f\u5916\u7f51\u53d1\u8d77<\/li>\n<\/ul>\n<pre><code class=\"language-go\">package main\n\nimport (\n    &quot;fmt&quot;\n    &quot;net&quot;\n    &quot;net\/http&quot;\n)\n\nfunc isPrivateIP(ip net.IP) bool {\n    if ip.IsLoopback() {\n        return true\n    }\n    ip4 := ip.To4()\n    if ip4 == nil {\n        return false\n    }\n    return ip4[0] == 10 || \/\/ 10.x.x.x\n        (ip4[0] == 172 &amp;&amp; (ip4[1] &gt;= 16 &amp;&amp; ip4[1] &lt;= 31)) || \/\/ 172.16.x.x - 172.31.x.x\n        (ip4[0] == 192 &amp;&amp; ip4[1] == 168) \/\/ 192.168.x.x\n}\n\nfunc handler(w http.ResponseWriter, r *http.Request) {\n    ip := r.RemoteAddr\n    if xff := r.Header.Get(&quot;X-Forwarded-For&quot;); xff != &quot;&quot; {\n        ip = xff\n    }\n    host, _, err := net.SplitHostPort(ip)\n    if err != nil {\n        fmt.Fprintf(w, &quot;Failed to parse IP: %v\\n&quot;, err)\n        return\n    }\n    if isPrivateIP(net.ParseIP(host)) {\n        fmt.Fprintf(w, &quot;Local IP Access\\n&quot;)\n    } else {\n        fmt.Fprintf(w, &quot;External IP Access\\n&quot;)\n    }\n}\n\nfunc main() {\n    http.HandleFunc(&quot;\/&quot;, handler)\n    http.ListenAndServe(&quot;:8080&quot;, nil)\n}<\/code><\/pre>\n<p>\u53e6\u5916\uff0c\u53ef\u4ee5\u6839\u636ehttp\u534f\u8bae\u539f\u7406\uff0c\u4ecerequest\u7684host\u5b57\u6bb5\u4e2d\u76f4\u63a5\u62ff\u5230\u8bf7\u6c42\u7684ip\u5730\u5740\u3002<\/p>\n<button class=\"simplefavorite-button\" data-postid=\"10802\" data-siteid=\"1\" data-groupid=\"1\" data-favoritecount=\"0\" style=\"\">\u6536\u85cf <i class=\"sf-icon-star-empty\"><\/i><\/button>","protected":false},"excerpt":{"rendered":"<p>\u68c0\u6d4b\u7aef\u53e3\u5360\u7528 https:\/\/www.cnblogs.com\/XiaoqiangCanFly\/p\/1 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[855],"tags":[],"_links":{"self":[{"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=\/wp\/v2\/posts\/10802"}],"collection":[{"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=10802"}],"version-history":[{"count":7,"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=\/wp\/v2\/posts\/10802\/revisions"}],"predecessor-version":[{"id":13128,"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=\/wp\/v2\/posts\/10802\/revisions\/13128"}],"wp:attachment":[{"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=10802"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=10802"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/xinyiworld.top\/wordpress_it\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=10802"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}