go启动web服务提供下文件使用

admin 2023年10月25日01:51:21评论20 views字数 1487阅读4分57秒阅读模式

go启动web服务提供下文件使用

小记

go启动web服务提供下文件使用

启动一个web服务目录供下载文件等测试使用

package mainimport (    "flag"    "fmt"    "net"    "net/http"    "os"    "os/signal"    "syscall")func main() {    // 解析命令行参数    port := parseCommandLineArgs()    // 使用 http.FileServer 创建文件服务器,并将根路径 "/" 映射到当前目录    http.Handle("/", http.FileServer(http.Dir(".")))    // 启动Web服务器并监听指定的端口和本机IP地址    ip := getLocalIP()    addr := fmt.Sprintf("%s:%d", ip, port)    fmt.Printf("服务器正在运行,访问地址:http://%sn", addr)    // 创建一个用于优雅关闭的通道    done := make(chan os.Signal, 1)    signal.Notify(done, syscall.SIGINT, syscall.SIGTERM)    go func() {        if err := http.ListenAndServe(addr, nil); err != nil {            fmt.Println(err)        }    }()    // 等待接收中断信号    <-done    fmt.Println("服务器已停止")}// 获取本机的IP地址func getLocalIP() string {    addrs, err := net.InterfaceAddrs()    if err != nil {        fmt.Println("无法获取本机IP地址:", err)        os.Exit(1)    }    for _, addr := range addrs {        if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() && ipnet.IP.To4() != nil {            return ipnet.IP.String()        }    }    fmt.Println("未找到本机IP地址")    os.Exit(1)    return ""}// 解析命令行参数func parseCommandLineArgs() int {    var port int    // 定义命令行选项    flag.Usage = func() {        fmt.Printf("使用方法: %s [端口号]nn", os.Args[0])        fmt.Println("参数:")        flag.PrintDefaults()    }    // 解析命令行选项    defaultPort := 8080    flag.IntVar(&port, "p", defaultPort, "要使用的端口号,默认为8080")    flag.Parse()    // 显示使用说明    if len(os.Args) < 2 && flag.NFlag() == 0 {        fmt.Printf("使用方法: ./webhttp -p 8888n")        fmt.Printf("未提供端口号,默认使用%dn", defaultPort)        fmt.Printf("按ctrl+c停止n")    } else if len(os.Args) < 2 {        flag.Usage()        os.Exit(0)    }    return port}


go启动web服务提供下文件使用




原文始发于微信公众号(echoabced):go启动web服务提供下文件使用

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年10月25日01:51:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   go启动web服务提供下文件使用https://cn-sec.com/archives/2142989.html

发表评论

匿名网友 填写信息