如何通过Java套接字以二进制形式发送数据?

时间:2010-10-05 15:06:19

标签: java sockets binary

我已经看到很多在Java中通过套接字发送序列化数据的例子,但我想要的只是发送一些简单的整数和一个字符串。而且,问题是我正在尝试将这些传达给用C语言编写的二进制文件。

那么,底线:如何在Java中的套接字上发送一些字节?

3 个答案:

答案 0 :(得分:9)

您可以使用OutputStream提供的简单Socket 从那里你可以write个字节。

如果您愿意,也可以将此流封装在BufferedOutputStream中以获得缓冲区。

答案 1 :(得分:4)

我真的建议不要直接使用Java套接字库。我发现Netty(来自JBoss)非常容易实现并且非常强大。 Netty ChannelBuffer类提供了大量用于编写不同数据类型的选项,当然,如果您愿意,可以编写自己的编码器和解码器以在流中编写POJO。

这个页面是一个非常好的入门者 - 我能够在30分钟内使用自定义编码器和解码器制作一个相当复杂的客户端/服务器:http://docs.jboss.org/netty/3.2/guide/html/start.html

如果你真的想使用Java套接字。套接字输出流可以包装在DataOutputStream中,允许您编写许多不同的数据类型,例如:

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

我希望这很有用。

答案 2 :(得分:1)

我建议您查看序列化Protocol Buffers和数据传输ZeroMQ