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.
79 lines
1.5 KiB
79 lines
1.5 KiB
6 years ago
|
/*
|
||
|
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()
|
||
|
}
|
||
|
}
|