Initial commit, wip
This commit is contained in:
commit
b66d49aa00
|
@ -0,0 +1,109 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
//"bufio"
|
||||
"context"
|
||||
"flag"
|
||||
"fmt"
|
||||
"image"
|
||||
"image/color"
|
||||
"log"
|
||||
"math/rand"
|
||||
"net"
|
||||
)
|
||||
|
||||
type pos struct {
|
||||
x, y int
|
||||
}
|
||||
|
||||
func colortoHEXRGB(c color.Color) string {
|
||||
r, g, b, _ := c.RGBA()
|
||||
return fmt.Sprintf("%2.2X%2.2X%2.2X", uint8(r), uint8(g), uint8(b))
|
||||
}
|
||||
|
||||
func main() {
|
||||
var (
|
||||
ep string
|
||||
)
|
||||
flag.StringVar(&ep, "endpoint", "localhost:80", "Endpoint")
|
||||
flag.Parse()
|
||||
|
||||
var (
|
||||
endpoint *net.TCPAddr
|
||||
err error
|
||||
mainlog *log.Logger
|
||||
)
|
||||
mainlog = log.Default()
|
||||
|
||||
endpoint, err = net.ResolveTCPAddr("tcp", ep)
|
||||
if err != nil {
|
||||
mainlog.Fatal("Failed to resolve address, bailing out: ", err)
|
||||
}
|
||||
for {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
fb := image.NewRGBA(image.Rect(0, 0, 1920, 1080))
|
||||
go writePixels(endpoint, fb, cancel)
|
||||
|
||||
for {
|
||||
for x := fb.Rect.Min.X; x < fb.Rect.Max.X; x++ {
|
||||
for y := fb.Rect.Min.Y; y < fb.Rect.Max.Y; y++ {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
err = fmt.Errorf("Connection got interrupted")
|
||||
break
|
||||
default:
|
||||
randset := rand.Uint64()
|
||||
color := color.RGBA{
|
||||
A: 0xFF,
|
||||
R: uint8(randset & 0xFF),
|
||||
G: uint8((randset >> 2) & 0xFF),
|
||||
B: uint8((randset >> 4) & 0xFF),
|
||||
}
|
||||
fb.SetRGBA(x, y, color)
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func writePixels(endpoint *net.TCPAddr, img *image.RGBA, cancel context.CancelFunc) {
|
||||
defer cancel()
|
||||
|
||||
var (
|
||||
err error
|
||||
conn *net.TCPConn
|
||||
)
|
||||
|
||||
//conn.New(10)
|
||||
for {
|
||||
conn, err = net.DialTCP("tcp", nil, endpoint)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
for x := img.Rect.Min.X; x < img.Rect.Max.X; x++ {
|
||||
for y := img.Rect.Min.Y; y < img.Rect.Max.Y; y++ {
|
||||
_, err = fmt.Fprintf(conn, "PX %d %d %s\n", x, y, colortoHEXRGB(img.At(x, y)))
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
break
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
conn.Close()
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue