golang UDP中Read()/ReadFromUDP()/Write()/WriteToUDP区别

UDP server

        UDP服务器端在调用”net.ListenUDP()“后创建”net.UDPConn”,read/write操作是通过这个UDPConn来完成的。因为listen的时候只指定了本地绑定的地址,它只能被动的接收来自客户端的消息,因此这个UDPConn在golang中为’unconnected’类型的。

        这种类型的UDPConn的读操作可以接受Read()及ReadFromUDP()。区别是Read()无法知道远程连接的地址信息而ReadFromUDP()可以,所以如果后续需要跟远程进行双向通讯需要使用ReadFromUDP()。大家直接查看函数对应的返回值即可看到Read和ReadFromUDP的区别。

        这种类型的UDPConn在进行写操作时必须使用WriteToUDP()完成,并且需要指定对方的地址信息。直接使用Write进行写操作客户端收不到信息。

UDP client

        UDP客户端的连接通过”net.DialUDP()“来创建。因为这个连接创建时指定了远程服务器地址,因此这种连接在golang中称为’connected’类型的连接。

        这种类型的连接进行读操作可以使用Read()及ReadFromUDP(),主要区别就是ReadFromUDP()会返回远程端的地址信息。

        这种类型的连接进行写操作只能用Write(),如果使用WriteToUDP()则无法完成数据发送。

综合分析:

客户端发送数据使用Write即可,接收数据可以使用Read和ReadFromUDP。

服务端发送数据使用WriteToUDP,读取数据使用ReadFromUDP。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值