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

2022-01-09 00:00:00 sockets binary java

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

I've seen lots of examples of sending serialized data over sockets in Java, but all I want is to send some simple integers and a string. And, the problem is I'm trying to communicate these to a binary written in C.

那么,底线是:我怎样才能在 Java 中通过套接字发送一些字节?

So, bottom line: how can I just send some bytes over a socket in Java?

推荐答案

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

I would really recommend not using the Java Sockets library directly. I've found Netty (from JBoss) to be really easy to implement and really powerful. The Netty ChannelBuffer class comes with a whole host of options for writing different data types and of course to can write your own encoders and decoders to write POJOs down the stream if you wish.

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

This page is a really good starter - I was able to make a fairly sophisticated client/server with custom encoders and decoders in under 30 minutes reading this: http://docs.jboss.org/netty/3.2/guide/html/start.html.

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

If you really want to use Java sockets. The socket output stream can be wrapped in a DataOutputStream which allows you to write many different data types as well, for example:

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

希望对你有用.

相关文章