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

evi*_*uin 5 java sockets binary

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

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

Col*_*ert 9

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

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


alp*_*ian 6

我真的建议不要直接使用 Java Sockets 库。我发现 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);
Run Code Online (Sandbox Code Playgroud)

我希望这很有用。