Piszę aplikację klient - serwer w trybie Go. Chcę wykonać rzut typu C w Go.Przejść do konwersji między tablicą struktury i bajtu
E.g. Przejdź
type packet struct {
opcode uint16
data [1024]byte
}
var pkt1 packet
...
n, raddr, err := conn.ReadFromUDP(pkt1) // error here
Również chcę wykonać C-jak memcpy(), która pozwoli mi bezpośrednio odwzorowywać strumień bajtów sieć otrzymała do struct.
np. z wyżej otrzymał pkt1
type file_info struct {
file_size uint32 // 4 bytes
file_name [1020]byte
}
var file file_info
if (pkt1.opcode == WRITE) {
memcpy(&file, pkt1.data, 1024)
}
ja polecam próbuje napisać go w pierwszy. Po prostu nie zrobiłbyś czegoś takiego w podróży. Między innymi, go nie ma castingu. 'uint' również nie jest 4 bajtami. 'Conn.Read' pobiera bajt' [], który jest efektywnie sprytnym wskaźnikiem o wielkości w tablicy. Będziesz miał o wiele lepszy czas, pisząc to w biegu. – Dustin
Czy już obejrzałeś wbudowaną serializację binarną za pomocą pakietu 'encoding/gob'? – dyoo