/* Landesamt für Geoinformation und Landentwicklung, Referat 35 Einführung in die Sprache Go, 25.7.2017 Lektion 12: Ein simpler Listener */ package main import ( "bytes" "fmt" "io" "log" "net" "strconv" "strings" ) const ( constNET_PROTOCOL = "tcp" constNET_PORT = 1234 ) type dasOhr struct { dasGehörte *string } func (f dasOhr) Write(b []byte) (int, error) { //fmt.Println(*f.dasGehörte, string(b)) *f.dasGehörte = string(b) return len(strings.TrimSpace(string(b))), nil } func Concatstring(args ...string) string { var buffer bytes.Buffer for _, v := range args { buffer.WriteString(v) } return buffer.String() } type Concatablestring string func (f *Concatablestring) Join(args ...string) string { var buffer bytes.Buffer buffer.WriteString(string(*f)) for _, v := range args { buffer.WriteString(v) } return buffer.String() } func main() { bb := dasOhr{new(string)} //gsocks := Concatstring(":", strconv.Itoa(constNET_PORT)) // Lausche an TCP port 1234 var javaLoversLikeObjekts Concatablestring = ":" gsocks := javaLoversLikeObjekts.Join(strconv.Itoa(constNET_PORT)) l, err := net.Listen(constNET_PROTOCOL, gsocks) if err != nil { log.Fatal(err) } defer l.Close() for { // Warte auf eine Connection conn, err := l.Accept() if err != nil { log.Fatal(err) } //io.CopyBuffer(tt, conn, make([]byte, 18)) io.Copy(bb, conn) fmt.Print("Televisor meldet: ", *bb.dasGehörte) fmt.Printf("Dieses Gedankenverbrechen wurde präsentiert von %v\n", conn.RemoteAddr()) conn.Close() } }