First little setup, there's a dentata server that receives block notices, and a landmine server/client that receives socket connects and reports them.
parent
cc3944eff2
commit
bddc747c8b
@ -0,0 +1,15 @@ |
|||||||
|
build: |
||||||
|
go build ./cmd/dentata
|
||||||
|
go build ./cmd/landmine
|
||||||
|
|
||||||
|
clean: |
||||||
|
rm dentata landmine
|
||||||
|
|
||||||
|
run_server: |
||||||
|
./dentata
|
||||||
|
|
||||||
|
run_mine: |
||||||
|
./landmine
|
||||||
|
|
||||||
|
docs: |
||||||
|
pkgsite -open
|
||||||
@ -0,0 +1,40 @@ |
|||||||
|
package main |
||||||
|
|
||||||
|
import ( |
||||||
|
"fmt" |
||||||
|
"net" |
||||||
|
"log" |
||||||
|
"bufio" |
||||||
|
) |
||||||
|
|
||||||
|
func handleConnection(conn net.Conn) { |
||||||
|
defer conn.Close() |
||||||
|
|
||||||
|
scan := bufio.NewScanner(conn) |
||||||
|
|
||||||
|
for scan.Scan() { |
||||||
|
addr := scan.Text() |
||||||
|
fmt.Println("BLOCK: ", addr) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
func listener(addr string) { |
||||||
|
server, err := net.Listen("tcp", addr) |
||||||
|
|
||||||
|
if err != nil { panic(err) } |
||||||
|
|
||||||
|
for { |
||||||
|
conn, err := server.Accept() |
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Println("ACCEPT ERROR", err) |
||||||
|
} else { |
||||||
|
go handleConnection(conn) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func main() { |
||||||
|
listener("127.0.0.1:9001") |
||||||
|
} |
||||||
@ -0,0 +1,50 @@ |
|||||||
|
package main |
||||||
|
|
||||||
|
import ( |
||||||
|
"fmt" |
||||||
|
"net" |
||||||
|
"log" |
||||||
|
"sync" |
||||||
|
) |
||||||
|
|
||||||
|
func handleConnection(conn net.Conn) { |
||||||
|
defer conn.Close() |
||||||
|
addr := conn.RemoteAddr() |
||||||
|
fmt.Println("Connect from", addr.Network(), addr.String()) |
||||||
|
|
||||||
|
// send explosion notice to dentata
|
||||||
|
report, err := net.Dial("tcp","127.0.0.1:9001") |
||||||
|
if err != nil { panic(err) } |
||||||
|
defer report.Close() |
||||||
|
|
||||||
|
report.Write([]byte(addr.String())) |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
func listener(addr string) { |
||||||
|
server, err := net.Listen("tcp", addr) |
||||||
|
|
||||||
|
if err != nil { panic(err) } |
||||||
|
|
||||||
|
for { |
||||||
|
conn, err := server.Accept() |
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Println("ACCEPT ERROR", err) |
||||||
|
} else { |
||||||
|
go handleConnection(conn) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func main() { |
||||||
|
var wg sync.WaitGroup |
||||||
|
|
||||||
|
for i := 0; i < 10; i++ { |
||||||
|
wg.Go(func () { |
||||||
|
listener(fmt.Sprintf("0.0.0.0:%d", 8000 + i)) |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
wg.Wait() |
||||||
|
} |
||||||
Loading…
Reference in new issue