Problem z przesyłaniem struktury
  Home FAQ Contact Sign in
pl.comp.os.linux.programowanie only
 
Advanced search
POPULAR GROUPS

more...

pl.comp.os.linux.programowanie Profile…
 Up
Problem z przesyłaniem struktury         


Author: konsul41
Date: Aug 29, 2008 02:40

Mam problem z przesyłaniem struktury za pomocą gniazd Delphi -> linux

Jeżeli jest zdefiniowana

Trekord = packed record

konto : array[0..13] of char;

netto : integer;

svat : integer;

vat : integer;

brutto : integer;

opis : array[0..59] of char;

end;

Inty są źle przesyłane (całkowicie inne liczby)

Jeżeli jest zdefiniowana

Trekord = packed record

netto : integer;

svat : integer;

vat : integer;

brutto : integer;

konto : array[0..13] of char;

opis : array[0..59] of char;
Show full article (0.72Kb)
28 Comments
Re: Problem z przesyłaniem struktury         


Author: Grzegorz Brzêczyszczykiewicz
Date: Aug 29, 2008 09:28

Rozumiem, że przesyłasz całą strukturę "na raz"? Jeśli tak - robisz to nie
poprawnie (przynajmniej po stronie C++), bo jest jasno powiedziane, że nie
gwarantuje się rozmieszczenia struktury w pamięci.

Przesyłaj/odbieraj wszystko pojedyńczo (pole za polem) powinno być OK.

--
Grzegorz Brzęczyszczykiewicz
no comments
Re: Problem z przesy³aniem struktury         


Author: Sebastian Bialy
Date: Aug 29, 2008 12:25

konsul41@wp.pl wrote:
> Oczywi¶cie po stronie linuxa jest struktura o takich samych polach i
> wielko¶ciach.

Co jeszcze nic nie mówi o identycznej sygnaturze pamięci. Albo
przesyłasz bajt po bajcie definiując inty na poziomie kolejności bajtów
albo posługujesz się gołym tekstem. Szczególnie polecam drugą możliwość.
Jesli nie robisz czegoś na granicy wydajności harwdare to goły tekst
bedzie łatwiej opanować i debugować.
no comments
Re: Problem z przesyłaniem struktury         


Author: konsul41
Date: Aug 31, 2008 23:10

Użytkownik "Grzegorz Brzęczyszczykiewicz" napisał
w wiadomości news:g99860$a92$2@news.onet.pl...
> Rozumiem, że przesyłasz całą strukturę "na raz"? Jeśli tak - robisz to nie
> poprawnie (przynajmniej po stronie C++), bo jest jasno powiedziane, że nie
> gwarantuje się rozmieszczenia struktury w pamięci.

Dziękuję za wyjaśnienie przynajmniej wiem co się dzieje.
> Przesyłaj/odbieraj wszystko pojedyńczo (pole za polem) powinno być OK.

Tak muszę robić.
no comments
Re: Problem z przesy3aniem struktury         


Author: konsul41
Date: Aug 31, 2008 23:11

Użytkownik "Sebastian Bialy" napisał w wiadomości
news:g99ihr$5ap$1@atlantis.news.neostrada.pl...
> konsul41@wp.pl wrote:
>> Oczywi?cie po stronie linuxa jest struktura o takich samych polach i
>> wielko?ciach.
>
> Co jeszcze nic nie mówi o identycznej sygnaturze pamięci. Albo przesyłasz
> bajt po bajcie definiując inty na poziomie kolejności bajtów albo
> posługujesz się gołym tekstem. Szczególnie polecam drugą możliwość. Jesli
> nie robisz czegoś na granicy wydajności harwdare to goły tekst bedzie
> łatwiej opanować i debugować.

Korzystam z funkcji htonl i ntohl
no comments
Re: Problem z przesyłaniem struktury         


Author: konsul41
Date: Aug 31, 2008 23:12

Użytkownik "Grzegorz Brzęczyszczykiewicz" napisał
w wiadomości news:g99860$a92$2@news.onet.pl...
> Rozumiem, że przesyłasz całą strukturę "na raz"? Jeśli tak - robisz to nie
> poprawnie (przynajmniej po stronie C++), bo jest jasno powiedziane, że nie
> gwarantuje się rozmieszczenia struktury w pamięci.
>
> Przesyłaj/odbieraj wszystko pojedyńczo (pole za polem) powinno być OK.

Jak to się robi w RPC przecierz tam przesyła się struktury?
Czy tam są funcje odpowiedzialne za serializacje struktur?
no comments
Re: Problem z przesyłaniem struktury         


Author: Kicer
Date: Aug 31, 2008 23:24

Grzegorz Brzęczyszczykiewicz wrote:
> Rozumiem, że przesyłasz całą strukturę "na raz"? Jeśli tak - robisz to nie
> poprawnie (przynajmniej po stronie C++), bo jest jasno powiedziane, że nie
> gwarantuje się rozmieszczenia struktury w pamięci.
>
> Przesyłaj/odbieraj wszystko pojedyńczo (pole za polem) powinno być OK.
>

mysle że można tez nadać strukturze w delphi atrybut pack (czy jak to tam
jest, dawno sie pascalam nie zajmowałem) a w c:
#pragma push,1
....
#pragma pop

po czyms takim powinno byc ok

--
Michał Walenciak, gg: 3729519, poczta: Kicer86 na gmail com
http://kicer.elsat.net.pl
no comments
Re: Problem z przesyłaniem struktury         


Author: Artur M. Piwko
Date: Sep 1, 2008 00:23

In the darkest hour on Mon, 01 Sep 2008 08:24:49 +0200,
Kicer screamed:
>> Rozumiem, że przesyłasz całą strukturę "na raz"? Jeśli tak - robisz to nie
>> poprawnie (przynajmniej po stronie C++), bo jest jasno powiedziane, że nie
>> gwarantuje się rozmieszczenia struktury w pamięci.
>>
>> Przesyłaj/odbieraj wszystko pojedyńczo (pole za polem) powinno być OK.
>
> mysle że można tez nadać strukturze w delphi atrybut pack (czy jak to tam
> jest, dawno sie pascalam nie zajmowałem) a w c:
> #pragma push,1
> ....
> #pragma pop
>
> po czyms takim powinno byc ok
>

Jak już jesteśmy na tej grupie, to raczej __attribute__((packed)). :)
Show full article (0.91Kb)
no comments
Re: Problem z przesyłaniem struktury         


Author: konsul41
Date: Sep 1, 2008 00:45

Użytkownik "Artur M. Piwko" napisał w
wiadomości news:slrngbn632.e1h.milusi.pysiaczek@buziaczek.pl...
> In the darkest hour on Mon, 01 Sep 2008 08:24:49 +0200,
> Kicer screamed:
>>> Rozumiem, że przesyłasz całą strukturę "na raz"? Jeśli tak - robisz to
>>> nie
>>> poprawnie (przynajmniej po stronie C++), bo jest jasno powiedziane, że
>>> nie
>>> gwarantuje się rozmieszczenia struktury w pamięci.
>>>
>>> Przesyłaj/odbieraj wszystko pojedyńczo (pole za polem) powinno być OK.
>>
>> mysle że można tez nadać strukturze w delphi atrybut pack (czy jak to tam
>> jest, dawno sie pascalam nie zajmowałem) a w c:
>> #pragma push,1
>> ....
>> #pragma pop
>>
>> po czyms takim powinno byc ok
>> ...
Show full article (1.46Kb)
no comments
Re: Problem z przesyłaniem struktury         


Author: Adam Wysocki
Date: Sep 1, 2008 01:14

konsul41@wp.pl wrote:
> Wszystko jest w porządku dlaczego się tak dzieje, ewentualnie jak to
> poprawić.
no comments
1 2 3