golang实现简单的udp协议服务端与客户端示例
本文实例讲述了golang实现简单的udp协议服务端与客户端。分享给大家供大家参考,具体如下:
其实udp没有什么服务端和客户端的概念了,只是一个发一个收而已,只是这样较方便能识别和理解.
服务端:
packagemain
import(
"fmt"
"net"
)
funcmain(){
//创建监听
socket,err:=net.ListenUDP("udp4",&net.UDPAddr{
IP: net.IPv4(0,0,0,0),
Port:8080,
})
iferr!=nil{
fmt.Println("监听失败!",err)
return
}
defersocket.Close()
for{
//读取数据
data:=make([]byte,4096)
read,remoteAddr,err:=socket.ReadFromUDP(data)
iferr!=nil{
fmt.Println("读取数据失败!",err)
continue
}
fmt.Println(read,remoteAddr)
fmt.Printf("%s\n\n",data)
//发送数据
senddata:=[]byte("helloclient!")
_,err=socket.WriteToUDP(senddata,remoteAddr)
iferr!=nil{
return
fmt.Println("发送数据失败!",err)
}
}
}
客户端:
packagemain
import(
"fmt"
"net"
)
funcmain(){
//创建连接
socket,err:=net.DialUDP("udp4",nil,&net.UDPAddr{
IP: net.IPv4(192,168,1,103),
Port:8080,
})
iferr!=nil{
fmt.Println("连接失败!",err)
return
}
defersocket.Close()
//发送数据
senddata:=[]byte("helloserver!")
_,err=socket.Write(senddata)
iferr!=nil{
fmt.Println("发送数据失败!",err)
return
}
//接收数据
data:=make([]byte,4096)
read,remoteAddr,err:=socket.ReadFromUDP(data)
iferr!=nil{
fmt.Println("读取数据失败!",err)
return
}
fmt.Println(read,remoteAddr)
fmt.Printf("%s\n",data)
}
希望本文所述对大家Go语言程序设计有所帮助。