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
+14.8k Golang : Get sub string example
+15k Golang : Get file permission
+17.9k Golang : Clearing slice
+44.4k Golang : Marshal and unmarshal json.RawMessage struct example
+5.2k Golang : Join lines with certain suffix symbol example
+4k Fix Google Analytics Redundant Hostnames problem
+29.3k Golang : Download file example
+7.4k Android Studio : Image button and button example
+8.4k Golang : Convert(cast) string to int64
+7.9k Golang : Build and compile multiple source files
+10.7k Golang : Split strings into command line arguments
+34.1k Golang : How to split or chunking a file to smaller pieces?