init tcp_test

This commit is contained in:
Travis Shears 2025-09-15 19:21:40 +02:00
parent 1a25129495
commit 7e6125066e
4 changed files with 312 additions and 50 deletions

View file

@ -2,51 +2,60 @@ package main
import (
"fmt"
"log"
"net"
"os"
"time"
)
const (
HOST = "0.0.0.0"
PORT = "8080"
TYPE = "tcp"
)
func main() {
listen, err := net.Listen(TYPE, HOST+":"+PORT)
println("Listening on", HOST+":"+PORT)
addr := "192.168.1.153:8080"
fmt.Printf("Starting TCP server on port %s\n", addr)
//Address to bind to
//Resolve address
addr_, err := net.ResolveTCPAddr("tcp", addr)
if err != nil {
log.Fatal(err)
os.Exit(1)
fmt.Printf("Error resolving address: %s", err.Error())
return
}
// close listener
defer listen.Close()
//Listen for incoming connections
listener, err := net.ListenTCP("tcp", addr_)
if err != nil {
fmt.Printf("Error starting server: %s", err.Error())
return
}
defer listener.Close()
for {
conn, err := listen.Accept()
//Accept incoming connection
conn, err := listener.AcceptTCP()
if err != nil {
log.Fatal(err)
os.Exit(1)
fmt.Printf("Error accepting connection: %s", err.Error())
continue
}
go handleRequest(conn)
go handleConnection(conn)
}
}
func handleRequest(conn net.Conn) {
// incoming request
func handleConnection(conn *net.TCPConn) {
defer conn.Close()
fmt.Printf("New connection from %s\n", conn.RemoteAddr().String())
buffer := make([]byte, 1024)
_, err := conn.Read(buffer)
if err != nil {
log.Fatal(err)
for {
//Read up to 1024 bytes
n, err := conn.Read(buffer)
if err != nil {
fmt.Printf("Error reading from connection: %s", err.Error())
return
}
if n == 0 {
return
}
fmt.Printf("Received message: %s\n", string(buffer[:n]))
//Echo message back
// _, err = conn.Write(buffer[:n])
_, err = conn.Write([]byte("1"))
if err != nil {
fmt.Printf("Error writing to connection: %s", err.Error())
return
}
}
// write data to response
time := time.Now().Format(time.ANSIC)
fmt.Printf("Message recived: %v. Received time: %v", string(buffer[:]), time)
conn.Write([]byte("1"))
// conn.Write([]byte(responseStr))
// close conn
conn.Close()
}