Skip to content

Instantly share code, notes, and snippets.

@abhishekkr
Last active October 12, 2023 14:23
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save abhishekkr/3beebbc1db54b3b54914 to your computer and use it in GitHub Desktop.
Save abhishekkr/3beebbc1db54b3b54914 to your computer and use it in GitHub Desktop.
simple golang's net example
package main
import (
"fmt"
"io/ioutil"
"net"
"os"
)
const (
CONN_HOST = "localhost"
CONN_PORT = "3333"
CONN_TYPE = "tcp"
)
func main() {
conn, err := net.Dial(CONN_TYPE, CONN_HOST+":"+CONN_PORT)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
ReadNWrite(conn)
conn.Close()
}
func ReadNWrite(conn net.Conn) {
message := "Test Request\n"
_, write_err := conn.Write([]byte(message))
if write_err != nil {
fmt.Println("failed:", write_err)
return
}
conn.(*net.TCPConn).CloseWrite()
buf, read_err := ioutil.ReadAll(conn)
if read_err != nil {
fmt.Println("failed:", read_err)
return
}
fmt.Println(string(buf))
}
package main
import (
"fmt"
"io/ioutil"
"net"
"os"
)
const (
CONN_HOST = "localhost"
CONN_PORT = "3333"
CONN_TYPE = "tcp"
)
func main() {
l, err := net.Listen(CONN_TYPE, CONN_HOST+":"+CONN_PORT)
if err != nil {
fmt.Println("Error listening:", err.Error())
os.Exit(1)
}
defer l.Close()
fmt.Println("Listening on " + CONN_HOST + ":" + CONN_PORT)
for {
conn, err := l.Accept()
if err != nil {
fmt.Println("Error accepting: ", err.Error())
os.Exit(1)
}
go handleRequest(conn)
}
}
func handleRequest(conn net.Conn) {
buf, read_err := ioutil.ReadAll(conn)
if read_err != nil {
fmt.Println("failed:", read_err)
return
}
fmt.Println("Got: ", string(buf))
_, write_err := conn.Write([]byte("Message received.\n"))
if write_err != nil {
fmt.Println("failed:", write_err)
return
}
conn.Close()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment