不以物喜,不以己悲

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)
	}
}
posted @   这种人  阅读(6074)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示