在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
UNIX域套接字(UDS):UNIX Domain Socket 1、服务端示例代码 /* server.go */ package main import ( "fmt" "net" "os" ) func checkError(err error) { if err != nil { fmt.Printf("Error: %s\n", err.Error()) os.Exit(1) } } func recvUnixMsg(conn *net.UnixConn) { var buf [20]byte n, raddr, err := conn.ReadFromUnix(buf[0:]) fmt.Println(raddr) if err != nil { return } fmt.Println("msg is ", string(buf[0:n])) _, err = conn.WriteToUnix([]byte("nice to see u"), raddr) checkError(err) } func main() { laddr, err := net.ResolveUnixAddr("unixgram", "/tmp/unix_gram_sock") checkError(err) conn, err := net.ListenUnixgram("unixgram", laddr) checkError(err) recvUnixMsg(conn) } 1、客户端示例代码 package main import ( "fmt" "net" "os" ) func checkError(err error) { if err != nil { fmt.Printf("Error: %s\n", err.Error()) os.Exit(1) } } func main() { raddr, err := net.ResolveUnixAddr("unixgram", "/tmp/unix_test_sock") checkError(err) laddr, err := net.ResolveUnixAddr("unixgram", "/tmp/unix_test_sock_cli") checkError(err) conn, err := net.DialUnix("unixgram", laddr, raddr) checkError(err) defer conn.Close() if err != nil { os.Exit(1) } n, err := conn.Write([]byte("Hello world")) fmt.Printf("send msg n:%d\n", n) var msg [20]byte conn.Read(msg[0:]) fmt.Println("msg is", string(msg[0:10])) } 3、执行结果 服务端
如果重复启动服务端的话,会报下面错误,需要先rm sock文件后再启动
客户端
|
请发表评论