2017-04-30 84 views
-1

我能夠發送和使用下面的代碼接收golang字符串:golang發送和接收對象

//send side 
message.Buf.WriteTo(conn) 

//receive side 
message, err := bufio.NewReader(conn).ReadString('\n') 
    if err != nil { 
     panic(err) 
    } 
fmt.Print("Message from client: ", string(message)) 

不過,我想整封郵件發送對象,並在接收端收到

喜歡的東西:

//send side 
message.WriteTo(conn) 

//receive side 
message,err :=bufio.NewReader(conn).ReadMessageObject() 

我是新來Golang任何指針是極大的幫助。

+1

字面上有無數的方法來「發送對象」。你想使用什麼編碼? – Flimzy

回答

0

您首先要爲您的消息聲明一個類型。喜歡的東西:

type Message struct { 
    From  string 
    To  string 
    Text  string 
    CreatedAt time.Time 
} 

然後,你需要決定如何您希望您的新類型進行編碼/從字節解碼,因爲你可以通過網絡發送的字節。 例如,您可以將您的消息發送爲json,如xmlgob等。您選擇哪一個取決於您的要求,json無處不在,但另一方面gob要快得多,至少這就是我聽說,自己還沒有真的使用過gob

例如,如果你去與json

// receive 
var m Message 
if _, err := json.NewDecoder(conn).Decode(&m); err != nil { 
    panic(err) 
} 

// send 
if err := json.NewEncoder(conn).Encode(m); err != nil { 
    panic(err) 
} 
+0

感謝您的示例。如果我有多個物件需要在電線上發送?任何關於如何完成它的指針? –

+0

你可以使用切片,地圖,數組......這完全取決於你,'json'和'gob'都可以處理這些。 – mkopriva

+0

我檢出了地圖和切片,並使用它們都能夠發送一組對象。不過,我也希望能夠連續發送數據流,這似乎不起作用。 –