server端代码:
package main
import (
"fmt"
"net"
"log"
"os"
)
func main() {
addr := "0.0.0.0:8787"
tcpAddr, err := net.ResolveTCPAddr("tcp",addr)
if err != nil {
log.Fatalf("net.ResovleTCPAddr fail:%s", addr) //等价于print err后,再os.Exit(1)
}
listener, err := net.ListenTCP("tcp", tcpAddr)
if err != nil {
log.Fatalf("listen %s fail: %s", addr, err)
}else {
log.Println("rpc listening", addr)
}
for {
conn, err := listener.Accept()
if err != nil {
log.Println("listener.Accept error:", err)
continue
}
go handle_Client(conn)
}
}
func handle_Client(conn net.Conn) {
defer conn.Close()
var write_buffer []byte = []byte("ok")
read_buffer := make([]byte, 128)
n, err1 := conn.Read(read_buffer)
if err1 != nil {
fmt.Println("ser Read failed:", err1)
os.Exit(1)
}
m, err2 := conn.Write(write_buffer)
if err2 != nil {
fmt.Println("ser send error:", err2)
os.Exit(1)
}
fmt.Println("ser read cli send data count:", n, "msg:", string(read_buffer))
fmt.Println("ser send data to cli count:", m, "msg:", string(write_buffer))
fmt.Println("********one connetion end*********")
}package main
import (