41 lines
735 B
Go
41 lines
735 B
Go
// This program listens to the host and port specified by the -listen flag and
|
|
// dumps any incoming data to standard output.
|
|
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"io"
|
|
"log"
|
|
"net"
|
|
"os"
|
|
)
|
|
|
|
var addr = flag.String("listen", "localhost:8000", "server listen address")
|
|
|
|
type dumpWriter struct {
|
|
c net.Conn
|
|
w io.Writer
|
|
}
|
|
|
|
func (w dumpWriter) Write(v []byte) (int, error) {
|
|
fmt.Fprintf(w.w, "[%v->%v] ", w.c.RemoteAddr(), w.c.LocalAddr())
|
|
return w.w.Write(v)
|
|
}
|
|
|
|
func main() {
|
|
flag.Parse()
|
|
l, err := net.Listen("tcp", *addr)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
log.Println("Listening on", l.Addr())
|
|
for {
|
|
c, err := l.Accept()
|
|
if err != nil {
|
|
log.Println(err)
|
|
continue
|
|
}
|
|
go io.Copy(dumpWriter{c, os.Stdout}, c)
|
|
}
|
|
}
|