Wysyłanie struktury przez networkstream

0

Witam

Mam taka strukturę:

struct dane
    {
        int Size;
        Point p;
        Color kolor;
    }

i chce ja wysłać streamem tylko że potrzebuje jej w postaci Byte. Nie wiem za bardzo jak ja przekonwertowac. Myślałem żeby każdą zmienna konwertować na byte i do tablicy zapisać, ale jak zmienne strukturę to muszę dodawać zmiany później w kodzie wiec jest jakiś sposób lepszy na to?

0
  1. czemu potrzebujesz jej w "Byte"?
  2. co rozumiesz przez "Byte"?
  3. czy w Twoim podejsciu do 'Byte' bierzesz pod uwage roznice Big/Little/PdpEndian?
  4. jesli potrzebujesz jej w Byte zeby puscic ja przez Stream, uczyn ja [Serializable] i skorzystaj z gotowych .net'owych serializerow, chocby XmlSerializer, zeby puscic od razu cala kolekcje takich struktur hurtem. jezeli boisz sie o rozmiar wynikowy, opakuj stream GzipStreamem czy Deflate'em..
  5. jesli czas/rozmiar dalej za duzy wyjscie - rozwaz obudowanie strumienia klasa BinaryWriter/BinaryReader ktora sie zajmie zapisem intow/stringow jako bajty. innymi slowy, po porstu uzywajac metod binarywriter'a wrzucaj kolejno pola kolejnych struktur.. metody BinaryWriter.Write(int), .Write(string), .Write(double) itp powinny Ci spokojnie wystarczyc. potem odczytasz je z odbiorczego strumienia porpzez BinaryReader i metody symetryczne metody Read(xxx). Miniprzyklad na filestream'ie tutaj ale rownie dobrze moze to byc strumien TCP albo inny..
  6. dopiero po rozwazeniu tych opcji/problemow siegaj po reczna serializacje do 'zywych bajtow'..
0

@qktośtam - zgaduję, że autor chce zamienić instancję tej struktury w tablicę byte. Coś mi się kojarzy, że były jakieś atrybuty automagicznie zmieniające pola struktury w ciągi bajtów ale nie pamiętam. Albo to był tylko sen.

0
somekind napisał(a)

@qktośtam - zgaduję, że autor chce zamienić instancję tej struktury w tablicę byte. Coś mi się kojarzy, że były jakieś atrybuty automagicznie zmieniające pola struktury w ciągi bajtów ale nie pamiętam. Albo to był tylko sen.

tak - ale po co? autor mowi o "wysylaniu streamem". Metody readwrite tej klasy standardowo przyjmuja tablice bajtow - wiec sadze ze "wymysl" tablicy bajtow przyszedl mu wlasnie stad. Jak juz napisalem, moze to zrobic na wiele sposobow bez maglowania sie z tablicami bajtow..

0
quetzalcoatl napisał(a)

tak - ale po co? autor mowi o "wysylaniu streamem". Metody readwrite tej klasy standardowo przyjmuja tablice bajtow - wiec sadze ze "wymysl" tablicy bajtow przyszedl mu wlasnie stad. Jak juz napisalem, moze to zrobic na wiele sposobow bez maglowania sie z tablicami bajtow..

Nie wiem, może przed wysłaniem chce ją sobie przemnożyć przez drugą macierz bajtów? Albo znaleźć min i max? Albo obliczyć średnią, medianę i odchylenie standardowe?
Z tablicą bajtów można zrobić więcej niż z kobietą i na dodatek bez proszenia.

0

a ja sadze, ze autor chce miec swinke morska, o!
moze ogranicz sie do tego, co on powiedzial, miast sie domyslac czegos, do czego gdy nawet nie ma przeslanek..

1 użytkowników online, w tym zalogowanych: 0, gości: 1