Golang : Issue HTTP commands to server and port example
Problem :
You want to issue or write HTTP command to a connection created by net.DialTCP()
function. How to do that?
Solution :
The net.Conn
type connection returned by net.DialTCP()
function has Write method. Use the Write method to issue HTTP command.
For example :
package main
import (
"fmt"
"io/ioutil"
"net"
"os"
)
func main() {
if len(os.Args) != 2 {
fmt.Printf("Usage: %s hostname:port_number \n", os.Args[0])
os.Exit(1)
}
serviceAndPort := os.Args[1]
fmt.Println("Service : ", serviceAndPort)
tcpAddr, err := net.ResolveTCPAddr("tcp4", serviceAndPort)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
conn, err := net.DialTCP("tcp", nil, tcpAddr)
defer conn.Close()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
// issue the HTTP command
nBytes, err := conn.Write([]byte("HEAD / HTTP/1.0\r\n\r\n"))
if err != nil {
fmt.Println(err)
os.Exit(1)
}
fmt.Printf("Written %v bytes\n", nBytes)
result, err := ioutil.ReadAll(conn)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
fmt.Println(string(result))
}
References :
http://golang.org/pkg/net/#Conn
http://papa.det.uvigo.es/~theiere/cursos/Curso_WWW/codes.html
https://socketloop.com/tutorials/golang-get-curl-i-or-head-data-from-url-example
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+10.7k Golang : convert(cast) float to string
+7k Golang : Handle Palindrome string with case sensitivity and unicode
+7.2k Golang : Emulate NumPy way of creating matrix example
+9k Golang : Compare files modify date example
+7.9k Golang : Get SPF and DMARC from email headers to fight spam
+7k Golang : Tell color name with OpenCV example
+11.9k Android Studio : Password input and reveal password example
+12.1k Golang : How to get a user home directory path?
+7.4k Golang : How to check if input string is a word?
+4.8k Golang : Error handling methods
+18.2k Golang : Example for DSA(Digital Signature Algorithm) package functions
+18.2k Golang : Delete item from slice based on index/key position