This commit is contained in:
a.pivkin
2026-01-03 18:10:08 +03:00
parent 77c0e5419c
commit ec2b96105f
6 changed files with 84 additions and 7 deletions
@@ -0,0 +1,3 @@
module main
go 1.25.5
@@ -0,0 +1,26 @@
package main
import (
"io"
"log"
"net"
"os"
)
func mustCopy(dst io.Writer,src io.Reader) {
if _,err := io.Copy(dst,src); err != nil {
log.Fatalf("Error in mustCopy",err)
}
}
func main() {
conn,err := net.Dial("tcp",":9090")
if err != nil {
log.Fatalf("Error in Dial %s",err)
}
defer conn.Close()
go mustCopy(os.Stdout,conn)
mustCopy(conn,os.Stdin)
}
@@ -0,0 +1,3 @@
module main
go 1.25.5
@@ -0,0 +1,45 @@
package main
import (
"bufio"
"fmt"
"log"
"net"
"strings"
"time"
)
func echo(c net.Conn, shout string, t time.Duration) {
fmt.Fprintln(c, "\t", strings.ToUpper(shout))
time.Sleep(t)
fmt.Fprintln(c, "\t", shout)
time.Sleep(t)
fmt.Fprintln(c, "\t", strings.ToLower(shout))
}
func handleConn(conn net.Conn) {
defer fmt.Println("CLosed Connection")
defer conn.Close()
fmt.Println("Accepted connection")
input := bufio.NewScanner(conn)
for input.Scan() {
go echo(conn, input.Text(), 1*time.Second)
}
}
func main() {
listener, err := net.Listen("tcp", ":9090")
if err != nil {
log.Fatalf("Error %v", err)
}
for {
conn, err := listener.Accept()
if err != nil {
log.Fatalf("Error in Accept %s", err)
}
go handleConn(conn)
}
}