about summary refs log tree commit diff
path: root/example-service/main.go
diff options
context:
space:
mode:
authorEmile <hanemile@protonmail.com>2019-06-27 00:19:44 +0200
committerEmile <hanemile@protonmail.com>2019-06-27 00:19:44 +0200
commit6ab0a595e7613d285b524f5643e828373f881fb4 (patch)
treed77e9dc2cb2b2566fcf7cb01dbfcce17349b60a0 /example-service/main.go
parent0f5cb0951020f6dac2a43008eb059176bbf4c84d (diff)
done
Diffstat (limited to 'example-service/main.go')
-rw-r--r--example-service/main.go57
1 files changed, 57 insertions, 0 deletions
diff --git a/example-service/main.go b/example-service/main.go
new file mode 100644
index 0000000..bbdc35f
--- /dev/null
+++ b/example-service/main.go
@@ -0,0 +1,57 @@
+package main
+
+import (
+    "net"
+    "log"
+    "os"
+    "fmt"
+)
+
+const(
+    CONN_HOST = "localhost"
+    CONN_PORT = "3333"
+    CONN_TYPE = "tcp"
+)
+
+func main() {
+
+    // start a new listener
+    l, err := net.Listen(CONN_TYPE, CONN_HOST + ":" + CONN_PORT)
+    if err != nil {
+        log.Printf("Error listening: %v", err)
+        os.Exit(1)
+    }
+
+    // close the listener when done
+    defer l.Close()
+
+    for {
+
+        // accept a connection
+        conn, err := l.Accept()
+        if err != nil {
+            log.Printf("Error accepting: %v", err)
+            os.Exit(1)
+        }
+
+        // handle the connection in a new go thread
+        go handlerequest(conn)
+
+    }
+}
+
+func handlerequest(conn net.Conn) {
+    // creat a buffer storing the incomming data
+    buf := make([]byte, 1000)
+
+    // read from the connection into the buffer
+    reqLen, err := conn.Read(buf)
+    if err != nil {
+        log.Printf("Error reading: %v", err)
+        os.Exit(1)
+    }
+
+    // write back how many bytes were sent
+    conn.Write([]byte(fmt.Sprintf("Read %d bytes", reqLen)))
+    conn.Close()
+}