Last active
June 9, 2024 10:04
-
-
Save habibiefaried/ec09cafa56673ada077e10c8405e3bf4 to your computer and use it in GitHub Desktop.
Revisions
-
habibiefaried revised this gist
Jun 9, 2024 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -75,7 +75,7 @@ func main() { log.Fatal(err) } s, err := RecvTCPMessage(conn) if err != nil { log.Fatal(err) } -
habibiefaried created this gist
Jun 9, 2024 .There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,84 @@ 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 := RecvTCPMessageTryThis2(conn) if err != nil { log.Fatal(err) } fmt.Println(s) conn.Close() }