2010-10-05 12 views
5

Widziałem wiele przykładów wysyłania szeregowanych danych przez gniazda w Javie, ale wszystko, co chcę, to wysłać kilka prostych liczb całkowitych i ciąg znaków. I problem polega na tym, że próbuję je przekazać binarnie napisanemu w C.Jak wysłać dane w formie binarnej przez gniazdo Java?

Tak więc, jak mogę wysłać kilka bajtów przez gniazdo w Javie?

+0

Czy na pewno program C i program Java traktują binarne znaki i łańcuchy w taki sam sposób? Jeśli nie, wyślij je jako zwykły stary tekst. Jeśli nie masz kontroli nad programem C czytającym gniazdo, nie będziesz miał innego wyjścia, jak tylko wysłać dane w dowolnym formacie, jakiego oczekuje program C. –

Odpowiedz

4

Naprawdę nie zaleca się używania biblioteki Java Sockets bezpośrednio. Zauważyłem, że Netty (od JBoss) jest naprawdę łatwa do wdrożenia i naprawdę potężna. Klasa Netty ChannelBuffer zawiera całą gamę opcji do zapisywania różnych typów danych i oczywiście może pisać własne kodery i dekodery, aby zapisywać POJO w strumieniu, jeśli chcesz.

Ta strona to naprawdę dobry starter - udało mi się stworzyć dość wyrafinowanego klienta/serwer z niestandardowymi enkoderami i dekoderami w czasie poniżej 30 minut, czytając to: http://docs.jboss.org/netty/3.2/guide/html/start.html.

Jeśli naprawdę chcesz korzystać z gniazdek Java. Strumienia wyjściowego gniazda mogą być zapakowane w DataOutputStream który pozwala pisać wiele różnych typów danych, jak również, na przykład:

new DataOutputStream(socket.getOutputStream()).writeInt(5); 

Mam nadzieję, że to przydatne.

+0

DataOutputStream wydaje się działać dobrze. Mój dzień pracy dobiegł końca, jutro o tym powiem. – evilpenguin

+0

Należy pamiętać, że link do tego samouczka dotyczy wersji Netty JBoss. To nie pasuje do API pobrania netty.io, do którego prowadzi samouczek. Zamiast tego użyj http://netty.io/wiki/user-guide-for-4.x.html – Speakjava

Powiązane problemy