TCP通信
TCP服务端
func process(conn net.Conn) {
defer conn.Close()
for {
reader := bufio.NewReader(conn)
var buf [128]byte
n, err := reader.Read(buf[:])
recvStr := string(buf[:n])
fmt.Println("收到client端发来的数据:", recvStr)
conn.Write([]byte(recvStr))
}
}
func main() {
listen, err := net.Listen("tcp", "127.0.0.1:20000")
for {
conn, err := listen.Accept()
go process(conn)
}
}
TCP客户端
func main() {
conn, err := net.Dial("tcp", "127.0.0.1:20000")
defer conn.Close() // 关闭连接
inputReader := bufio.NewReader(os.Stdin)
for {
input, _ := inputReader.ReadString('\n') // 读取用户输入
inputInfo := strings.Trim(input, "\r\n")
_, err = conn.Write([]byte(inputInfo)) // 发送数据
buf := [512]byte{}
n, err := conn.Read(buf[:])
fmt.Println(string(buf[:n]))
}
}
UDP通信
UDP服务端
func main() {
listen, err := net.ListenUDP("udp", &net.UDPAddr{
IP: net.IPv4(0, 0, 0, 0),
Port: 30000,
})
defer listen.Close()
for {
var data [1024]byte
n, addr, err := listen.ReadFromUDP(data[:]) // 接收数据
fmt.Printf("data:%v addr:%v count:%v\n", string(data[:n]), addr, n)
_, err = listen.WriteToUDP(data[:n], addr) // 发送数据
}
}
UDP客户端
func main() {
socket, err := net.DialUDP("udp", nil, &net.UDPAddr{
IP: net.IPv4(0, 0, 0, 0),
Port: 30000,
})
defer socket.Close()
sendData := []byte("Hello server")
_, err = socket.Write(sendData)
data := make([]byte, 4096)
n, remoteAddr, err := socket.ReadFromUDP(data)
fmt.Printf("recv:%v addr:%v count:%v\n", string(data[:n]), remoteAddr, n)
}
http编程
HTTP服务端
func main() {
http.HandleFunc("/go", myHandler)
http.ListenAndServe("127.0.0.1:8000", nil)
}
func myHandler(w http.ResponseWriter, r *http.Request) {
fmt.Println(r.RemoteAddr, "连接成功")
fmt.Println("method:", r.Method)
fmt.Println("url:", r.URL.Path)
fmt.Println("header:", r.Header)
fmt.Println("body:", r.Body)
w.Write([]byte("www.5lmh.com"))
}
HTTP客户端
func main() {
resp, _ := http.Get("http://127.0.0.1:8000/go")
defer resp.Body.Close()
fmt.Println(resp.Status)
fmt.Println(resp.Header)
buf := make([]byte, 1024)
for {
n, err := resp.Body.Read(buf)
if err != nil && err != io.EOF {
return
} else {
res := string(buf[:n])
fmt.Println(res)
break
}
}
}
WebSocket编程