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。