Skip to content

Instantly share code, notes, and snippets.

@skanehira
Last active July 24, 2020 14:02
Show Gist options
  • Save skanehira/cdcaa6d3d5657bbc67bc7a05803639b2 to your computer and use it in GitHub Desktop.
Save skanehira/cdcaa6d3d5657bbc67bc7a05803639b2 to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"log"
"golang.org/x/sys/unix"
)
func main() {
// create socket
socket, err := unix.Socket(unix.AF_INET, unix.SOCK_STREAM, 0)
if err != nil {
log.Fatal(err)
}
// bind socket to address
addr := unix.SockaddrInet4{
Port: 8888,
Addr: [4]byte{0, 0, 0, 0},
}
if err := unix.Bind(socket, &addr); err != nil {
log.Fatal(err)
}
// listen port
if err := unix.Listen(socket, 1); err != nil {
log.Fatal(err)
}
fmt.Println("listen port 8888")
defer unix.Close(socket)
// accept connection
for {
nfd, _, err := unix.Accept(socket)
if err != nil {
log.Fatal(err)
}
fmt.Println("accepted")
for {
var b [256]byte
n, err := unix.Read(nfd, b[:])
if err != nil {
log.Fatal(err)
}
if n == 0 {
break
}
println(string(b[:n]))
unix.Write(nfd, []byte("recived: "+string(b[:n])))
}
unix.Close(nfd)
println("closed")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment