Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 03:17 02.07.24 
Компютри и Интернет
   >> Java
Всички теми Следваща тема *Кратък преглед

Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема C structures <=> Java?нови  
Авторoncho (Нерегистриран)
Публикувано24.08.05 01:15



С програмист съм, но искам да навляза и в други води. Пиша пробно приложение клиент-сървър при което сървърът е на С, а клиентът на Java. Комуникацията е по TCP. В сървъра съм си дефинирал примерна структура:
typedef struct my_h {
int flags;
char text[100];
} my_h;
Проблемът ми е че в С знам точно колко е голяма тази структура и съответно мога да я изпратя без проблем - бит по бит през TCP сокета. От другата страна обаче стои Java приложението, което не мога да се сетя лесен начин да получи същите данни в аналогичен вид. Единственото което ми идва през акъла е да parse-вам входа като стринг и от там вече да си вадя флага и текста, но това решение ми се струва много глупаво. Какви са по-добрите идеи?:-)



Тема Re: C structures <=> Java?нови [re: oncho]  
Авторl (Нерегистриран)
Публикувано24.08.05 05:22



Абе изобщо не съм сигурен, че знаеш колко ти е голяма структурата. :) Тя зависи от компилатора, платформата и още една камара неща. Да не говорим за big- и little-endian. Казано с други думи, този начин на програмиране изобщо не е преносим и препоръчителен.

Добрият начин е и от двете страни да имаш функции, които сериализират и десериализират структурите.

Иначе за конкретният проблем, четеш 104 байта, предполагаш какъв е endianess на компютъра на сървъра и сглобяваш от първите 4 int, а от останалите стринга.



Тема Re: C structures <=> Java? [re: l]  
Авторoncho (Нерегистриран)
Публикувано24.08.05 10:20



Знам колко ми е голяма структурата, защото указвам на компилатора да не align-ва :-)
За big и little endian да предположим че също знам :-)



Тема Re: C structures <=> Java?нови [re: oncho]  
Автор DrmR (глупак)
Публикувано24.08.05 10:31



бих казал, че би трябвало да послушаш човека. дори и да знаеш всичко и да настройш перфектно компилатора - защо се мъчиш след като така и така ще ти трябват serializator and deserializator за Java-та.

Но наистина единствения начин е чрез парсване на входа. не можеш приетото директно да го памнеш на някакъв обект, освен на byte[].



Тема Re: C structures <=> Java?нови [re: DrmR]  
Авторnasko (Нерегистриран)
Публикувано24.08.05 11:59



>> ...така и така ще ти трябват serializator and deserializator за Java-та

Защо да е задължително? Както сам казваш, на входа получаваш byte[]. Четеш и присвояваш на съответните полета в Джава класа... Грозничко, ама няма как.. сериализирането как ще ти помогне?



Тема Re: C structures <=> Java?нови [re: oncho]  
Авторnasko (Нерегистриран)
Публикувано24.08.05 12:10



Ми това е начинът. Само че на входа не е трябва да получаваш String, а byte[]. Някои ще кажат, че Джава е тъп език, ама идеята е, че в Джава само виртуалната машина (трябва да) знае как, къде и в каква последователност в паметта са разположени мемберите на класовете (struct-ове няма)... Та излиза, че това не е бъг а фичър ;)



Тема Re: C structures <=> Java?нови [re: oncho]  
Авторl (Нерегистриран)
Публикувано24.08.05 13:54



Твоя си работа -- програмата си е твоя, можеш да си я пишеш с краката като искаш :) Аз само споменах как обикновено се пишат междуплатформени програми. Лично аз в никакъв случай не бих използвал структура за предаване на данни, дори ако средата за предаване е споделена памет.



Тема Re: C structures <=> Java?нови [re: oncho]  
Авторches (Нерегистриран)
Публикувано24.08.05 14:07



Просто кажи Хай на CORBA
проблемите ти са решени , с 2 думи:
1) описваш структората на IDL
2) със Ц ОРБ генерираш стубовете(и скелетони)
3) със Жаба ОРБ генерираш състото за Жаба
4) пускаш един Кос Нейминг
5) пишеш по 10 реда код от двете страни
6) весело и щастливо обменяш каквото си поискаш



Тема Re: C structures <=> Java?нови [re: oncho]  
АвторPesho tupot (Нерегистриран)
Публикувано25.08.05 14:19



Zdrasty!

Ako si gotov da kleknesh malko, bux ti preporuchal slednoto:

1. Web-services (SOAP, XML-marchaling) ili neshto takova.
Naprimer
<xml><my_h>
<flags>102</flags>
<text>Tova e tup text</text>
</my_h></xml>

2. CORBA - ama tuk problema e sushtija, ste trjabva da podmenish transporta ot TCP/IP/Sockets na CORBA

3. Nesto super izmisleno:
BYTE tt[104];
my_h my;
C:
tt[0]= (BYTE)my.flags>>24;
tt[1]= (BYTE)(my.flags>>16)&& 0xFF;
tt[2]= (BYTE)(my.flags>>8)&& 0xFF;
tt[3]= (BYTE)(my.flags && 0xFF);
strcpy(tt+4, my.text);

// Tova e paketiraneto



Тема Re: C structures <=> Java?нови [re: Pesho tupot]  
Авторches (Нерегистриран)
Публикувано25.08.05 17:50



да де, само че тази подмяна се прави автоматично , ти не се занимаваш да пишеш там е далверата ....
е и Веб Сервисес е състия к*р като Цорба , едно и също е само съобщенията не са бинари ами хмл .....
но и при двете далаверата е че друг ти прави маршалинг и на ти се налага да пишеш:

шитс лайк дис

BYTE tt[104];
my_h my;
C:
tt[0]= (BYTE)my.flags>>24;
tt[1]= (BYTE)(my.flags>>16)&& 0xFF;
tt[2]= (BYTE)(my.flags>>8)&& 0xFF;
tt[3]= (BYTE)(my.flags && 0xFF);
strcpy(tt+4, my.text);





Страници по тази тема: 1 | 2 | >> (покажи всички)
Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.