go网络编程

go网络编程
安安网络编程常用方法
1.Conn接口
1 | type Conn interface { |
方法:
1 | func Dial(network, address string) (Conn, error) |
1 | func Listen(net, laddr string) (Listener, error) |
2.TCPConn
方法:
1 | func (c *TCPConn) Read(b []byte) (int, error) |
1 | func (c *TCPConn) Write(b []byte) (int, error) |
二、net/http包
程序在使用完回复后必须关闭回复的主体。
1 | type Response struct { |
方法
1 | func Head(url string) (resp *Response, err error) |
Head向指定的URL发出一个HEAD请求,如果回应的状态码如下,Head会在调用c.CheckRedirect后执行重定向:
1 | 301 (Moved Permanently) |
Head是对包变量DefaultClient的Head方法的包装。
1 | func Get(url string) (resp *Response, err error) |
Get向指定的URL发出一个GET请求,如果回应的状态码如下,Get会在调用c.CheckRedirect后执行重定向:
1 | 301 (Moved Permanently) |
1 | func Post(url string, bodyType string, body io.Reader) (resp *Response, err error) |
Post向指定的URL发出一个POST请求。bodyType为POST数据的类型, body为POST数据,作为请求的主体。如果参数body实现了io.Closer接口,它会在发送请求后被关闭。调用者有责任在读取完返回值resp的主体后关闭它。
Post是对包变量DefaultClient的Post方法的包装。
func PostForm
1 | func PostForm(url string, data url.Values) (resp *Response, err error) |
PostForm向指定的URL发出一个POST请求,url.Values类型的data会被编码为请求的主体。如果返回值err为nil,resp.Body总是非nil的,调用者应该在读取完resp.Body后关闭它。
PostForm是对包变量DefaultClient的PostForm方法的包装。
func Handle
1 | func Handle(pattern string, handler Handler) |
Handle注册HTTP处理器handler和对应的模式pattern(注册到DefaultServeMux)。如果该模式已经注册有一个处理器,Handle会panic。ServeMux的文档解释了模式的匹配机制。
func HandleFunc
1 | func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) |
HandleFunc注册一个处理器函数handler和对应的模式pattern(注册到DefaultServeMux)。ServeMux的文档解释了模式的匹配机制。
func Serve
1 | func Serve(l net.Listener, handler Handler) error |
Serve会接手监听器l收到的每一个连接,并为每一个连接创建一个新的服务go程。该go程会读取请求,然后调用handler回复请求。handler参数一般会设为nil,此时会使用DefaultServeMux。
func ListenAndServe
1 | func ListenAndServe(addr string, handler Handler) error |
ListenAndServe监听TCP地址addr,并且会使用handler参数调用Serve函数处理接收到的连接。handler参数一般会设为nil,此时会使用DefaultServeMux。
一个简单的服务端例子:
1 | package main |

