【问题标题】:Using a DataOutput/Input Stream with Netty?在 Netty 中使用数据输出/输入流?
【发布时间】:2014-09-20 05:19:17
【问题描述】:

我正在尝试使用 Java 进行非阻塞网络,并且我决定使用 Netty 网络库来这样做。我目前有一个完全工作的服务器/客户端应用程序,它使用字符串来处理网络功能。服务器/客户端将分解字符串并从中获取数据;然而,这不是我需要做的。

我一直在查看 DataOutputStream,它似乎具有我希望能够通过网络使用的功能。

  • writeByte/readByte
  • writeBytes/readBytes
  • writeChar/readChar
  • writeDouble/readDouble
  • writeShort/readShort
  • writeFloat/readFloat
  • writeInt/readInt
  • writeUTF/readUTF。

目前我所做的一切基本上都是 UTF 格式。我刚刚使用 (bytes[])String

发送字节

我很难弄清楚如何实现这样的系统。我不想继续使用这种低效的基于字符串的网络。这是浪费带宽,我没有学到任何东西。

【问题讨论】:

  • 您可以设计自己的协议,包括标头、有效负载等。您的程序是做什么的?
  • @Kayaman -- 我真的不太了解网络,我只是进入它。在我开始上学之前,我正在开发一个 2D 游戏作为一个业余爱好者项目。 EDIT: I understand networking, just not the code behind it... If I knew how to write my own protocol I wouldn't be asking for help :P
  • 你应该看看一些现有的协议。也许你会得到想法。 DataStreams 非常有用,你是对的,因为通常你会在标题中拥有不同大小的字段,并且使用不同的方法读取它们比作为字节数组并自己解析要容易得多。
  • 您正在寻找的可能是 Thrift/Nifty 和 Swift 之类的东西? github.com/facebook/swift

标签: java networking io netty nio


【解决方案1】:

所以,我在 netty 中找到了我想要的东西,我已经使用了几天了,还没有回帖。

netty 内部有一个ChannelBufferInputStream 和一个ChannelBufferOutputStream,它们都以ChannelBuffer 作为参数,并允许与DataStream 类似的功能。它确实帮助我建立了网络。

【讨论】:

    猜你喜欢
    • 2011-06-06
    • 2018-07-18
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    相关资源
    最近更新 更多