为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Go

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





点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
26
获赞与收藏
113

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消