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

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

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

我真的建议不要直接使用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); 

我希望这很有用。

您可以使用Socket给出的简单OutputStream 。
从那里你可以写字节。

如果需要,还可以将此流封装在BufferedOutputStream中以获得缓冲区。

我建议查看协议缓冲区的序列化和ZeroMQ的数据传输。