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

View File

@ -47,8 +47,8 @@ func Serve (c *Conn) {
case "QUIT": // close case "QUIT": // close
c.respond(status221) c.respond(status221)
return return
case "RETR": // get // case "RETR": // get
c.retr(args) // c.retr(args)
case "TYPE": case "TYPE":
c.setDataType(args) c.setDataType(args)
default: default:

View File

@ -10,11 +10,11 @@ func (c *Conn) dataConnect() (net.Conn, error) {
return conn, nil return conn, nil
} }
dataConn, err := c.dataConnect() dataConn, err = c.dataConnect()
if err != nil { if err != nil {
log.Print(err) log.Print(err)
c.respond(status425) c.respond(status425)
return return
} }
defer dataConn.Close() defer dataConn.Close()

View File

@ -0,0 +1,3 @@
module main
go 1.25.5

View File

@ -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)
}

View File

@ -0,0 +1,3 @@
module main
go 1.25.5

View File

@ -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)
}
}