私は第2のサーバーとの接続を正常に開くサーバーを持っています。 2番目のサーバーがアクションを実行し、同じ接続でJSONを使用して最初のサーバーに返信しようとしています。開いているTCPソケットでJSONを返信する
私はラインconn.Write(C)にエラーが発生し、次の取得package main
import (
"fmt"
"net"
"encoding/json"
)
type NewContainerJSON struct {
Action string `json:"Action"`
ContainerName string `json:"ContainerName"`
BaseServer string `json:"BaseServer"`
CMS string `json:"CMS"`
WebsiteName string `json:"WebsiteName"`
DBrootPWD string `json:"DBrootPWD"`
DBadminUname string `json:"DBadminUname"`
DBadminPWD string `json:"DBadminPWD"`
}
func main() {
service := "127.0.0.1:8081"
tcpAddr, err := net.ResolveTCPAddr("tcp", service)
checkError(err)
listener, err := net.ListenTCP("tcp", tcpAddr)
checkError(err)
conn, err := listener.Accept()
checkError(err)
decoder := json.NewDecoder(conn)
encoder := json.NewEncoder(conn)
var b NewContainerJSON
err = decoder.Decode(&b)
checkError(err)
fmt.Println(b.Action)
if b.Action == "createNew" {
fmt.Println("This works")
resp := []byte("And here's our repomse")
conn.Write(resp)
c := NewContainerJSON {
Action: "createdNewContainer",
ContainerName: "Test",
BaseServer: "Test",
CMS: "Test",
WebsiteName: "Test",
DBrootPWD: "Test",
DBadminUname: "Test",
DBadminPWD: "Test",
}
encoder := json.NewEncoder(conn)
if err := encoder.Encode(c); err != nil {
fmt.Println("encode.Encode error: ", err)
}
conn.Write(c)
}
}
func checkError(err error) {
if err != nil {
fmt.Println("An error occurred: ", err.Error())
}
}
は
をconn.Writeする引数にタイプ[]バイトとしてC(タイプNewContainerJSON)を使用することはできません2つの質問:
1:このエラーはどういう意味ですか? conn.Write関数を使用するときに 'c'をByteとして使用することはできないが、json.EncoderはconnWriteが使用できる形式にJSONを変換してはいけないと不平を言っているようです。
2:オープン接続を使用してJSONを最初のサーバーにどのくらい戻すことができますか?