Created
January 20, 2016 21:11
-
-
Save nikkolasg/76d9dbb60618d96986af to your computer and use it in GitHub Desktop.
UDP size buffer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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