2010-10-05 13 views
5

He visto muchos ejemplos de envío de datos serializados sobre sockets en Java, pero todo lo que quiero es enviar algunos enteros simples y una cadena. Y, el problema es que estoy tratando de comunicarlos a un binario escrito en C.¿Cómo puedo enviar datos en forma binaria a través de un socket Java?

Por lo tanto, línea de fondo: ¿cómo puedo enviar algunos bytes sobre un socket en Java?

+0

¿Estás seguro de que el programa C y el programa Java tratan las cadenas y los caracteres binarios de la misma manera? Si no es así, envíelos como texto antiguo. Si no tiene control del programa C leyendo el socket, entonces no tendrá más remedio que enviar los datos en el formato que desee el programa C. –

Respuesta

4

Realmente recomendaría no utilizar la biblioteca Java Sockets directamente. Descubrí que Netty (de JBoss) es realmente fácil de implementar y realmente poderoso. La clase Netty ChannelBuffer viene con una gran cantidad de opciones para escribir diferentes tipos de datos y, por supuesto, para escribir sus propios codificadores y decodificadores para escribir POJO en la secuencia, si lo desea.

Esta página es realmente buena: pude hacer un cliente/servidor bastante sofisticado con codificadores y decodificadores personalizados en menos de 30 minutos leyendo esto: http://docs.jboss.org/netty/3.2/guide/html/start.html.

Si realmente desea usar sockets de Java. El flujo de salida de socket puede ser envuelto en una DataOutputStream que le permite escribir muchos diferentes tipos de datos, así, por ejemplo:

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

espero que sea útil.

+0

DataOutputStream parece funcionar bien. Mi día de trabajo ha terminado, volveré sobre esto mañana. – evilpenguin

+0

Tenga en cuenta que el enlace a este tutorial es para la versión de Netty de JBoss. Eso no coincide con la API de la descarga de netty.io a la que se vincula el tutorial. Use http://netty.io/wiki/user-guide-for-4.x.html en su lugar – Speakjava

Cuestiones relacionadas