Skip to content

Instantly share code, notes, and snippets.

@miguelmota
Last active August 24, 2025 06:50
Show Gist options
  • Select an option

  • Save miguelmota/301340db93de42b537df5588c1380863 to your computer and use it in GitHub Desktop.

Select an option

Save miguelmota/301340db93de42b537df5588c1380863 to your computer and use it in GitHub Desktop.
Golang TCP server example
package server
import (
"bufio"
"fmt"
"log"
"net"
)
// Server ...
type Server struct {
host string
port string
}
// Client ...
type Client struct {
conn net.Conn
}
// Config ...
type Config struct {
Host string
Port string
}
// New ...
func New(config *Config) *Server {
return &Server{
host: config.Host,
port: config.Port,
}
}
// Run ...
func (server *Server) Run() {
listener, err := net.Listen("tcp", fmt.Sprintf("%s:%s", server.host, server.port))
if err != nil {
log.Fatal(err)
}
defer listener.Close()
for {
conn, err := listener.Accept()
if err != nil {
log.Fatal(err)
}
client := &Client{
conn: conn,
}
go client.handleRequest()
}
}
func (client *Client) handleRequest() {
reader := bufio.NewReader(client.conn)
for {
message, err := reader.ReadString('\n')
if err != nil {
client.conn.Close()
return
}
fmt.Printf("Message incoming: %s", string(message))
client.conn.Write([]byte("Message received.\n"))
}
}
package server
import (
"testing"
)
func TestServer(t *testing.T) {
server := New(&Config{
Host: "localhost",
Port: "3333",
})
server.Run()
}
// echo "hello world" | nc localhost 3333
Copy link
Copy Markdown

ghost commented Apr 12, 2024

Thank you bro

@notahek
Copy link
Copy Markdown

notahek commented Aug 4, 2025

no thanks for that

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment