继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

go语言unix域套接字发送udp报文

holdtom
关注TA
已关注
手记 1846
粉丝 240
获赞 991


/* 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)

}

/* client.so */

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_gram_sock")

        checkError(err)

        laddr, err := net.ResolveUnixAddr("unixgram", "/tmp/unix_gram_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]))

}

©著作权归作者所有:来自51CTO博客作者ebayboy的原创作品,如需转载,请注明出处,否则将追究法律责任


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP