欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Go基础编程实践(九)—— 网络编程

程序员文章站 2022-06-17 08:18:16
下载网页 下载文件 创建Web服务器 创建文件服务器 ......

下载网页

package main

import (
    "io/ioutil"
    "net/http"
    "fmt"
)

func main() {
    url := "http://www.cnblogs.com/gaiheilukamei"
    response, err := http.get(url)
    if err != nil {
        panic(err)
    }
    defer response.body.close()
    html, err2 := ioutil.readall(response.body)
    if err2 != nil {
        panic(err2)
    }
    // readall返回[]byte
    fmt.println(string(html))
}
// 这种直接下载下来的网页用处不大,旨在提供思路

下载文件

package main

import (
    "net/http"
    "io"
    "os"
    "fmt"
)

func main() {
    // 获取文件
    imageurl := "http://pic.uzzf.com/up/2015-7/20157816026.jpg"
    response, err := http.get(imageurl)
    if err != nil {
        panic(err)
    }
    defer response.body.close()
    // 创建保存位置
    file, err2 := os.create("pic.jpg")
    if err2 != nil {
        panic(err2)
    }
    // 保存文件
    _, err3 := io.copy(file, response.body)
    if err3 != nil {
        panic(err3)
    }

    file.close()
    fmt.println("image downloading is successful.")
}

创建web服务器

// 运行程序,打开浏览器,根据输入的查询参数将返回不同的值
// 例如:"http://localhost:8000/?planet=world" 将在页面显示"hello, world"
package main

import (
    "net/http"
    "log"
)

func sayhello(w http.responsewriter, r *http.request) {
    // query方法解析rawquery字段并返回其表示的values类型键值对。
    planet := r.url.query().get("planet")
    w.write([]byte("hello, " + planet))
}

func main() {
    http.handlefunc("/", sayhello)
    log.fatalln(http.listenandserve(":8000", nil)) 
}

创建文件服务器

// 在本程序同目录下创建images文件夹,放入一些文件
// 打开浏览器访问"http://localhost:5050"将会看到文件
package main

import "net/http"

func main() {
    http.handle("/", http.fileserver(http.dir("./images")))
    http.listenandserve(":5050", nil)
}