diff options
| author | ilotterytea <iltsu@alright.party> | 2025-08-02 00:01:53 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2025-08-02 00:01:53 +0500 |
| commit | 141ea48aef643b2e2f7b7ed6e564365ced7a03b8 (patch) | |
| tree | ae49eefa4827141c0fd7e9350032279ee7b9c154 | |
| parent | 0b045079d2e392ad34710d3e542a225452966d86 (diff) | |
feat: handle client connection
| -rw-r--r-- | cmd/ircd/main.go | 24 | ||||
| -rw-r--r-- | internal/client.go | 31 |
2 files changed, 54 insertions, 1 deletions
diff --git a/cmd/ircd/main.go b/cmd/ircd/main.go index 7776ec8..91eebbf 100644 --- a/cmd/ircd/main.go +++ b/cmd/ircd/main.go @@ -1,7 +1,29 @@ package main -import "fmt" +import ( + "fmt" + ircd "ilotterytea/tinyircd/internal" + "log" + "net" +) func main() { fmt.Println("hello world!") + listener, err := net.Listen("tcp", ":6667") + if err != nil { + log.Fatalf("Error listening: %v", err) + } + defer listener.Close() + + fmt.Println("IRC server listening on :6667") + + for { + conn, err := listener.Accept() + if err != nil { + log.Printf("Error accepting connection: %v", err) + continue + } + + go ircd.HandleClientConnection(conn) + } } diff --git a/internal/client.go b/internal/client.go new file mode 100644 index 0000000..164a29d --- /dev/null +++ b/internal/client.go @@ -0,0 +1,31 @@ +package ircd + +import ( + "fmt" + "log" + "net" +) + +func HandleClientConnection(conn net.Conn) { + defer conn.Close() + log.Printf("New client connected from %s\n", conn.RemoteAddr()) + + buffer := make([]byte, 512) + + for { + n, err := conn.Read(buffer) + if err != nil { + log.Printf("Error reading from client %s: %v\n", conn.RemoteAddr(), err) + return + } + + data := string(buffer[:n]) + fmt.Printf("%s sent %s\n", conn.RemoteAddr(), data) + + _, err = conn.Write([]byte("you said " + data)) + if err != nil { + log.Printf("Error sending to client %s: %v", conn.RemoteAddr(), err) + return + } + } +} |
