Select Git revision
cours_11.md
Forked from
algorithmique / cours
Source project has a limited visibility.
client.go 1.53 KiB
package main
import (
"encoding/json"
"fmt"
types "local/helper"
"net"
"os"
"strconv"
)
const (
ServerPort = "8017"
ServerType = "tcp"
)
func main() {
args := os.Args
if len(args) < 3 {
fmt.Printf("Usage: %s <server> <action>", args[0])
os.Exit(1)
}
serverHost := args[1]
action, _ := strconv.Atoi(args[2])
var id int
var from string
var to string
var amount int
var m types.Message
switch action {
case types.MCreateTransaction:
if len(args) != 7 {
fmt.Printf("Usage: %s %s %d <id> <from> <to> <amount>\n", args[0], serverHost, action)
os.Exit(1)
}
id, _ = strconv.Atoi(args[3])
from = args[4]
to = args[5]
amount, _ = strconv.Atoi(args[6])
t := types.Transaction{
Id: id,
From: from,
To: to,
Amount: amount,
}
m = types.Message{
Action: types.MCreateTransaction,
Transaction: t,
Proactive: serverHost,
}
sendMessage(serverHost, m)
break
case types.MListTransactions:
m = types.Message{
Action: types.MListTransactions,
Proactive: serverHost,
}
sendMessage(serverHost, m)
break
default:
break
}
}
func sendMessage(serverHost string, message types.Message) {
data, err := json.Marshal(message)
if err != nil {
panic(err)
}
connection, err := net.Dial(ServerType, serverHost+":"+ServerPort)
if err != nil {
panic(err)
}
_, err = connection.Write(data)
buffer := make([]byte, 2048)
mLen, err := connection.Read(buffer)
if err != nil {
panic(err)
}
fmt.Println("Received: ", string(buffer[:mLen]))
defer connection.Close()
}