Przesyłanie obiektów między programami w różnych językach

0

Co potrzeba zeby program w Javie wysyłał zserializowane dane(Stringi,Integery itp) przez sieć do innego programu napisanego w C++ na innym hoście(i na odwrót)??Czy nie będzie problemów z deserializacją,ze zgodnością typów??

0

Poczytaj o WebServices... po to wymyślili tą technologie...

0

Czyli nie moge tak normalnie wysłac np. Stringa po sockecie w C++ przez sieć i po drugiej stronie odebrać go socketem w Javie??Czemu??przecież nic wiecej poza tym Stringiem nie przesyłam,druga strona zna ten typ wiec dlaczego sie nie da??

0

Tak? A jak socket ma odroznic czy przesylasz stringa, czy ingegrera? Zeby odroznic musisz wymyslic wlasny protokół, czyli zaczniesz od nowa tworzyc technologie, ktora sie nazywa webseris.

Tym nie mniej, jezeli chcesz tylko przyslac jakis tekst, to mozesz go rownie wyslac po jakmis upd albo http, a druga strona go odbierze.

0

Ale już suchą tablicę bajtów można przesłać między programem w C++ i w Javie po sockecie??

0

Oczywiście, że można.

Tu masz sokety w Javie:
http://java.sun.com/javase/6/docs/api/java/net/Socket.html
http://java.sun.com/javase/6/docs/api/java/net/ServerSocket.html

Twoja przeglądarka została zapewne napisana w C/C++ i jakimś cudem potrafi się dogadać z google.com. Czy to jednak znaczy, że serwer google został napisany w C/C++? Oczywiście, że nie.
Jedyną ważną rzeczą jest to, że obie strony używają protokołu HTTP, który w niższej warstwie używa TCP.
Twoim protokołem wyższej warstwy powinno być SOAP (web servicy).

Chyba, że jakiś wykładowca cię męczy, nie masz wyboru i musisz to zrobić bezpośrednio po soketach. Wtedy musisz zdefiniować sam protokół oraz dbać o konwersję kolejność bajtów (big i little endian)

0

Kolejność bajtów jak najbardziej,tylko co masz na mysli pisząc o zdefiniowaniu protokołu??Ja tą tablice bajtów chciałem przesłac po UDP i tyle:)

0

Spoko,tyle ze to jest dla Javy,w Javie cały projekt mam napisany który składa sie z 3 programów,tyle ze jeden z tych 3 programów który sczytuje z danego hosta parametry np. liczba procesów,siła sygnału itp. jest napisany np. w ten sposób(kawałek kodu):
Runtime r = Runtime.getRuntime();
Process p = r.exec("iwlist");
in = new BufferedReader(new InputStreamReader(p.getInputStream()));
itd.
Jak widzisz ręcznie wykonuje tu konkretne polecenie i jego wyniki wysyłam potem przez sieć,a chce komunikować sie bezposrednio z jądrem przez sockety netlinkowe,a to moge zrobic tylko w C\C++ bo w Javie nie ma do tego wsparcia.1 pytanie czemu moje rozwiązanie jest złe(kod powyżej) i w końcu rozumiem ze mogę bez problemju przesłać dane w postaci tablicy bajtów z tego programu napisanego w C++ po socketach do zdalnego hosta który odbiera te dane w Javie??pzdr:)

0

Jeżeli rzeczywiście nie ma tych soketów w Javie, to nie problem.
Napisz kod odczytujący z nich w C/C++ i połącz go z Javą mechanizmem JNI

http://en.wikipedia.org/wiki/Java_Native_Interface

0

Przepraszam ze jestem upierdliwy ale czy mechanizm JNI jest naprawdę niezbędny zeby przesłac suchą tablice bajtów po socketach(UDP) miedzy programami w C++ i Javie???:)

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