Golang : Find network service name from given port and protocol



Tags : golang network-services udptcp getservbyport getservbyname

In this tutorial, we will learn how to discover the list of available network services on a machine. This method can be useful in developing network application that needs to probe a machine network configuration first before starting the main program. The example program below uses the https://godoc.org/honnef.co/go/netdb package to discover the available network services. It maybe useful to specify either your program is probing for services that use UPD or TCP protocol. Here you go! package main import ( "fmt" "honnef.co/go/netdb" ) func main() { fmt.Println("---------------------------------------") var proto *netdb.Protoent var serv *netdb.Servent // UDP proto = netdb.GetProtoByName("udp") fmt.Println("List of UDP services with port number : ") for portNumber := 25; portNumber <= 80; portNumber++ { serv = netdb.GetServByPort(portNumber, proto) if serv != nil { fmt.Println("Service name : ", serv.Name) fmt.Println("Aliases for this service : ") for k, v := range serv.Aliases { fmt.Println(k, v) } fmt.Println("Service is using port number : ", serv.Port) fmt.Println("######################") } } fmt.Println("---------------------------------------") // UDP /* proto := netdb.GetProtoByName("udp") serv := netdb.GetServByPort(80, proto) fmt.Println("Service name : ", serv.Name) fmt.Println("Aliases for this service : ") for k, v := range serv.Aliases { fmt.Println(k, v) } fmt.Println("Service is using port number : ", serv.Port) fmt.Println("---------------------------------------") */ // TCP /* proto2 := netdb.GetProtoByName("tcp") serv2 := netdb.GetServByPort(80, proto2) fmt.Println("Service name : ", serv2.Name) fmt.Println("Aliases for this service : ") for k, v := range serv2.Aliases { fmt.Println(k, v) } fmt.Println("Service is using port number : ", serv2.Port) */ } Output: List of UDP services with port number : Service name : smtp Aliases for this service : Service is using port number : 25 # Service name : nsw-fe Aliases for this service : Service is using port number : 27 # Service name : msg-icp Aliases for this service : Service is using port number : 29 # Service name : msg-auth Aliases for this service : Service is using port number : 31 # Service name : dsp Aliases for this service : Service is using port number : 33 # Service name : time Aliases for this service : Service is using port number : 37 # Service name : rap Aliases for this service : Service is using port number : 38 # Service name : rlp Aliases for this service : Service is using port number : 39 # Service name : graphics Aliases for this service : Service is using port number : 41 # ..... References: http://php.net/manual/en/function.getservbyport.php https://godoc.org/honnef.co/go/netdb

  See also : Golang : Get UDP client IP address and differentiate clients by port number



Tags : golang network-services udptcp getservbyport getservbyname

Adam Ng By Adam Ng

Get in touch at Google Plus or stay updated on Facebook.

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

Advertisement

Advertisement