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