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)
	}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM