Skip to content

Instantly share code, notes, and snippets.

@trigun117
Last active September 29, 2018 13:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save trigun117/ac58a6931beaa30453527fb3e0e9573b to your computer and use it in GitHub Desktop.
Save trigun117/ac58a6931beaa30453527fb3e0e9573b to your computer and use it in GitHub Desktop.
Golang RPC Server/Client example

Build executable files using this commands:

GOOS=your_system go build server.go

GOOS=your_system go build client.go

Upload server file to remote server and run with ./server

On client machine run client file with second argument(server ip address) like this ./client 35.204.248.15 and type text which will be printed on server

package main
import (
"bufio"
"log"
"net/rpc"
"os"
)
func main() {
client, err := rpc.Dial("tcp", os.Args[1]+":80")
if err != nil {
log.Fatal(err)
}
println("Type your text")
in := bufio.NewReader(os.Stdin)
for {
line, _, err := in.ReadLine()
if err != nil {
log.Fatal(err)
}
var reply bool
err = client.Call("L.G", line, &reply)
if err != nil {
log.Fatal(err)
}
}
}
package main
import (
"fmt"
"log"
"net"
"net/rpc"
)
type L int
func (l *L) G(line []byte, res *bool) error {
fmt.Println(string(line))
return nil
}
func main() {
addy, err := net.ResolveTCPAddr("tcp", "0.0.0.0:80")
if err != nil {
log.Fatal(err)
}
inb, err := net.ListenTCP("tcp", addy)
if err != nil {
log.Fatal(err)
}
rpc.Register(new(L))
rpc.Accept(inb)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment