Go语言的标准net库使用

Go语言的标准net库使用

与大多数语言一样,Go的标准库是很全的,因为Go的出现本来就是为了网络通信的高并发实现,所以其相关的网络库封装得很简洁,也更加的易读。这里对使用到的api进行记录。
net.ResolveIPAddr()
根据域名查找IP地址

package main

import(
	"fmt"
	"net"
)

func main(){
	ip, err := net.ResolveIPAddr("ip", "www.baidu.com")
	if err != nil{
		fmt.Println(err)
		return
	}
	fmt.Println(ip)
}

简单的TCP服务器

package main

import(
	"fmt"
	"net"
)
func Read(con net.Conn){
	data := make([]byte, 1000)
	for{
		n, err := con.Read(data)
		if err != nil{
			fmt.Println(err)
			break
		}
		fmt.Println(string(data[0:n]))
	}
}
func main(){
	listen, err := net.Listen("tcp", "192.168.0.101:3569")
	if err != nil{
		fmt.Println(err)
		return
	}
	for{
		con, err := listen.Accept()
		if err != nil{
			fmt.Println(err)
			continue
		}
		go Read(con)
	}
}

简单的HTTP服务

package main

import(
	"fmt"
	"net/http"
)

func HandleIndex(w http.ResponseWriter, r *http.Request){
	r.ParseForm()
	fmt.Println("PATH: ", r.URL.Path)
	fmt.Println("SCHEME: ", r.URL.Scheme)
	fmt.Println("METHOD: ", r.Method)
	fmt.Println()
	fmt.Fprintf(w,  "<h1>Index Page</h1>")
	fmt.Println(w)
}

func main(){
	fmt.Println("Start")
	http.HandleFunc("/", HandleIndex)
	err := http.ListenAndServe(":8000", nil)
	if err != nil{
		fmt.Println(err)
	}
}
原文地址:https://www.cnblogs.com/zzr-stdio/p/9874759.html