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
+4.8k PHP : Get client IP address
+9.9k Golang : Delay or limit HTTP requests example
+4.6k Golang : ROT32768 (rotate by 0x80) UTF-8 strings example
+21.5k Golang : Get ASCII code from a key press(cross-platform) example
+28.4k Golang : How to verify uploaded file is image or allowed file types
+20.2k SSL : How to check if current certificate is sha1 or sha2
+34.1k Golang : How to split or chunking a file to smaller pieces?
+6.4k Golang : Example of how to detect which type of script a word belongs to
+3.8k Facebook : How to place save to Facebook button on your website
+6.4k Golang : Not able to grep log.Println() output
+5k Golang : Detect variable or constant type
+9.4k Golang : Select region of interest with mouse click and crop from image