Skip to content

Instantly share code, notes, and snippets.

@nikkolasg
Created January 20, 2016 21:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nikkolasg/76d9dbb60618d96986af to your computer and use it in GitHub Desktop.
Save nikkolasg/76d9dbb60618d96986af to your computer and use it in GitHub Desktop.
UDP size buffer
package main
import (
"encoding/binary"
"fmt"
"net"
"os"
"time"
)
/* A Simple function to verify error */
func CheckError(err error) {
if err != nil {
fmt.Println("Error: ", err)
os.Exit(0)
}
}
func main() {
ch := make(chan bool)
go server(ch)
time.Sleep(1 * time.Second)
client()
<-ch
}
func server(ch chan bool) {
/* Lets prepare a address at any address at port 10001*/
ServerAddr, err := net.ResolveUDPAddr("udp", ":10001")
CheckError(err)
/* Now listen at selected port */
serverConn, err := net.ListenUDP("udp", ServerAddr)
CheckError(err)
defer serverConn.Close()
// read first the size
var size int32
if err := binary.Read(serverConn, binary.LittleEndian, &size); err != nil {
fmt.Println("err", err)
}
buf := make([]byte, size)
if err := binary.Read(serverConn, binary.LittleEndian, &buf); err != nil {
fmt.Println("err", err)
}
fmt.Printf("buf = %s\n", buf)
ch <- true
}
func client() {
ServerAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:10001")
CheckError(err)
LocalAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:0")
CheckError(err)
Conn, err := net.DialUDP("udp", LocalAddr, ServerAddr)
CheckError(err)
defer Conn.Close()
msg := []byte("Hello World!\n")
var size int32 = int32(len(msg))
if err := binary.Write(Conn, binary.LittleEndian, size); err != nil {
fmt.Println("err", err)
}
if err := binary.Write(Conn, binary.LittleEndian, msg); err != nil {
fmt.Println("err", err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment