I am trying to do something like this using Go language, UDP Client <-----> UDP Server, UDP Client sending bulk structure to UDP Server, but not able to parse at UDP Server side or vice versa. For example, the following structure sending at Client side, need to print at UDP Server side
// client Side
type Message struct {
name string
}
s := Message{name:"hello"}
conn, err := net.Dial("udp", "127.0.0.1:1234")
_, err = bufio.NewReader(conn).Read(s)
// server side
addr := net.UDPAddr{
Port: 1234,
IP: net.ParseIP("127.0.0.1"),
}
ser, err := net.ListenUDP("udp", &addr)
nBytes, remoteaddr, err := ser.ReadFromUDP(p)
fmt.Println("string : %s", p) // prints some junk
How can I achieve this? Any help is greatly appreciated. Thanks in Advance !
// Client
/*
typedef struct
{
int i;
double d;
char s;
}Message;
*/
func main() {
conn, err := net.Dial("udp", "127.0.0.1:5000")
if err != nil {
log.Fatal(err)
return
}
msg, err := json.Marshal(C.Message{i: 123, d:10.5, s:'c'})
conn.Write(msg)
fmt.Printf("message sent")
conn.Close()
}
// server.go
/*
typedef struct
{
int i;
double d;
char s;
}Message;
*/
func main() {
addr := net.UDPAddr{
Port: 5000,
IP: net.ParseIP("127.0.0.1"),
}
s, err := net.ListenUDP("udp", &addr)
if err != nil {
log.Println(err)
return
}
b := make([]byte, 512)
for {
n, rAddr, err := s.ReadFrom(b)
var msg C.Message
if err = json.Unmarshal(b[:n], &msg); err != nil {
log.Println(err)
continue
}
fmt.Printf("%s > %+v\n", rAddr, msg)
}
}