Skip to content

Instantly share code, notes, and snippets.

@kylelemons
Created September 15, 2011 20:18
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kylelemons/1220351 to your computer and use it in GitHub Desktop.
Save kylelemons/1220351 to your computer and use it in GitHub Desktop.
Unix Datagram Server/Client
package main
import (
"flag"
"io"
"log"
"net"
"os"
)
var sock = flag.String("sock", "/tmp/test-udg", "Socket to connect to")
func main() {
flag.Parse()
addr, err := net.ResolveUnixAddr("unixgram", *sock)
if err != nil {
log.Fatalf("ResolveUnix: %v", err)
}
laddr, err := net.ResolveUnixAddr("unixgram", *sock + ".local")
if err != nil {
log.Fatalf("ResolveUnix: %v", err)
}
c, err := net.DialUnix("unixgram", laddr, addr)
if err != nil {
log.Fatalf("DialUnix: %v", err)
}
defer os.Remove(*sock + ".local")
if _, err = io.WriteString(c, "test"); err != nil {
log.Printf("Write: %v", err)
}
}
package main
import (
"flag"
"log"
"net"
"os"
)
var sock = flag.String("sock", "/tmp/test-udg", "Socket on which to listen")
func main() {
flag.Parse()
c, err := net.ListenPacket("unixgram", *sock)
if err != nil {
log.Fatalf("ListenPacket: %s", err)
}
defer os.Remove(*sock)
buf := make([]byte, 512)
for {
length, raddr, err := c.ReadFrom(buf)
if err != nil {
log.Printf("ReadFrom: %v", err)
break
}
log.Printf("<%s> %q", raddr, buf[:length])
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment