Last active
June 9, 2024 10:04
-
-
Save habibiefaried/ec09cafa56673ada077e10c8405e3bf4 to your computer and use it in GitHub Desktop.
TCP Client to HTTP demo
This file contains 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 ( | |
"bufio" | |
"fmt" | |
"net" | |
"log" | |
"bytes" | |
) | |
func SendTCPMessage(conn net.Conn, input string) error { | |
_, err := conn.Write([]byte(input)) | |
if err != nil { | |
return err | |
} | |
return nil | |
} | |
func RecvTCPMessageTryThis1(conn net.Conn) (string, error){ | |
reader := bufio.NewReader(conn) | |
part := make([]byte, 4096) | |
n, err := reader.Read(part) | |
if err != nil { | |
return "", err | |
} | |
return string(part[:n]), nil | |
} | |
func RecvTCPMessageTryThis2(conn net.Conn) (string, error){ | |
var response bytes.Buffer | |
reader := bufio.NewReader(conn) | |
// Read the headers | |
for { | |
line, err := reader.ReadString('\n') | |
if err != nil { | |
return "", err | |
} | |
if line == "\r\n" { | |
break | |
} | |
response.WriteString(line) | |
} | |
return response.String(), nil | |
} | |
func RecvTCPMessage(conn net.Conn) (string, error){ | |
response, err := bufio.NewReader(conn).ReadString('\n') | |
if err != nil { | |
return "", err | |
} | |
return response, nil | |
} | |
func RunTCPClient() (net.Conn, error) { | |
// Connect to the server | |
conn, err := net.Dial("tcp", "example.org:80") | |
if err != nil { | |
return conn, err | |
} | |
return conn, nil | |
} | |
func main() { | |
conn, err := RunTCPClient() | |
if err != nil { | |
log.Fatal(err) | |
} | |
err = SendTCPMessage(conn, "GET / HTTP/1.1\nHost:example.org\n\n") | |
if err != nil { | |
log.Fatal(err) | |
} | |
s, err := RecvTCPMessage(conn) | |
if err != nil { | |
log.Fatal(err) | |
} | |
fmt.Println(s) | |
conn.Close() | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment