Created
November 5, 2014 13:31
-
-
Save jpfuentes2/e0e9d22817d48f2a4cdb to your computer and use it in GitHub Desktop.
TCP/IP Echo server from https://coderwall.com/p/wohavg/creating-a-simple-tcp-server-in-go
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"fmt" | |
"net" | |
"os" | |
) | |
const ( | |
CONN_HOST = "localhost" | |
CONN_PORT = "3333" | |
CONN_TYPE = "tcp" | |
) | |
func main() { | |
// Listen for incoming connections. | |
l, err := net.Listen(CONN_TYPE, CONN_HOST+":"+CONN_PORT) | |
if err != nil { | |
fmt.Println("Error listening:", err.Error()) | |
os.Exit(1) | |
} | |
// Close the listener when the application closes. | |
defer l.Close() | |
fmt.Println("Listening on " + CONN_HOST + ":" + CONN_PORT) | |
for { | |
// Listen for an incoming connection. | |
conn, err := l.Accept() | |
if err != nil { | |
fmt.Println("Error accepting: ", err.Error()) | |
os.Exit(1) | |
} | |
// Handle connections in a new goroutine. | |
go handleRequest(conn) | |
} | |
} | |
// Handles incoming requests. | |
func handleRequest(conn net.Conn) { | |
// Make a buffer to hold incoming data. | |
buf := make([]byte, 1024) | |
// Read the incoming connection into the buffer. | |
reqLen, err := conn.Read(buf) | |
if err != nil { | |
fmt.Println("Error reading:", err.Error()) | |
} | |
// Send a response back to person contacting us. | |
conn.Write([]byte("Message received.")) | |
// Close the connection when you're done with it. | |
conn.Close() | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment