Einführung in die Sprache Go anhand von Beispielen
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
1.5 KiB

/*
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()
}
}