温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-07-13 19:46:56 来源:网络 阅读:8752 作者:ebayboy 栏目:编程语言

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





向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI