The example of this article describes the Golang implementation of a simple UDP protocol server and client. Share to everyone for your reference, specific as follows:
In fact, UDP does not have any server and the concept of the client, just a send a collection, just so more convenient to identify and understand.
Service side:
Copy Code code as follows:
Package Main
Import (
"FMT"
"NET"
)
Func Main () {
Create a listener
Socket, ERR: = Net. LISTENUDP ("Udp4", &net. udpaddr{
Ip:net. IPV4 (0, 0, 0, 0),
port:8080,
})
If Err!= nil {
Fmt. PRINTLN ("Monitoring failed!", err)
Return
}
Defer socket. Close ()
for {
Reading data
Data: = Make ([]byte, 4096)
Read, remoteaddr, err: = socket. READFROMUDP (data)
If Err!= nil {
Fmt. PRINTLN ("Read data failed!", err)
Continue
}
Fmt. Println (read, remoteaddr)
Fmt. Printf ("%s\n\n", data)
Send data
SendData: = []byte ("Hello client!")
_, Err = socket. WRITETOUDP (SendData, remoteaddr)
If Err!= nil {
Return
Fmt. PRINTLN ("Send data Failed!", err)
}
}
}
Client:
Copy Code code as follows:
Package Main
Import (
"FMT"
"NET"
)
Func Main () {
Create a connection
Socket, ERR: = Net. DIALUDP ("UDP4", Nil, &net. udpaddr{
Ip:net. IPV4 (192, 168, 1, 103),
port:8080,
})
If Err!= nil {
Fmt. Println ("Connection Failed!", err)
Return
}
Defer socket. Close ()
Send data
SendData: = []byte ("Hello server!")
_, Err = socket. Write (SendData)
If Err!= nil {
Fmt. PRINTLN ("Send data Failed!", err)
Return
}
Receive data
Data: = Make ([]byte, 4096)
Read, remoteaddr, err: = socket. READFROMUDP (data)
If Err!= nil {
Fmt. PRINTLN ("Read data failed!", err)
Return
}
Fmt. Println (read, remoteaddr)
Fmt. Printf ("%s\n", data)
}
I hope this article will help you with your go language program.