Created
April 16, 2018 15:51
-
-
Save Mardiniii/b9047b27871055612bd72dfb40c2a5b8 to your computer and use it in GitHub Desktop.
TCP server with HTTP protocol using Golang
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 | |
go handleRequest(conn) | |
} | |
} | |
func handleRequest(conn net.Conn) { | |
// Make a buffer to hold incoming data. | |
buf := make([]byte, 1024) | |
// Read the incoming connection into the buffer. | |
l, err := conn.Read(buf) | |
if err != nil { | |
fmt.Println("Error reading:", err.Error()) | |
} | |
fmt.Println(l) | |
// Send a response back to person contacting us. | |
r := []byte("HTTP/1.1 200 OK\r\nConnection: close\r\nContent-Type: text/html\r\nContent-Length: 19\r\n\r\n<h1>Hola Mundo</h1>") | |
conn.Write(r) | |
// 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