I am new to go,
I was trying to prepare client server in go language and tried to write code, but it’s not giving any output. It’s not giving any error but just listening.
Please someone help me, I want to create authentication system using go where server authenticate client using Username password..
server :
package main
import (
"fmt"
"net"
)
func main() {
service := "0.0.0.0:8080"
tcpAddr, err := net.ResolveTCPAddr("tcp", service)
checkError(err)
listener, err := net.ListenTCP("tcp", tcpAddr)
checkError(err)
for {
conn, err := listener.Accept()
//fmt.Println("Server listerning")
_, err = conn.Read([]byte("HEAD"))
if err != nil {
conn.Close()
}
if err != nil {
continue
}
}
}
func checkError(err error) {
if err != nil {
fmt.Println("Fatal error ", err.Error())
}
}
client :
package main
import (
"bufio"
"fmt"
"net"
"os"
"strings"
)
func main() {
if len(os.Args) != 2 {
fmt.Println("Usage: ", os.Args[0], "host")
os.Exit(1)
}
host := os.Args[1]
conn, err := net.Dial("tcp", host+":8080")
checkError(err)
_, err = conn.Write([]byte("HEAD"))
reader := bufio.NewReader(os.Stdin)
for {
line, err := reader.ReadString('\n')
ftm.Println(err)
line = strings.TrimRight(line, " \t\r\n")
if err != nil {
conn.Close()
break
}
}
}
func checkError(err error) {
if err != nil {
fmt.Println("Fatal error ", err.Error())
}
}
I’m not sure you need to resolve your address in order to listen.
You should be able to do just this :
And you don’t seem to do anything with the received bytes server side (you discard the result of
Read), which explains why you think you receive nothing.Note that your code can only handle one connection at a time. You should handle each opened connection in a new goroutine.
Here’s an example of client-server communication over TCP in a related question.