- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个基于 UDP 的应用程序来接收和发送多个数据包。
我可以为每次发送构建一个新的 DatagramPacket
,或者在我的应用程序的生命周期中回收一个实例。
DatagramPacket
有什么好处吗? (例如内存分配)最佳答案
看来你做不到。我只是尝试发送相同的 DatagramPacket
两次,我得到以下行为:
因此,您可以重用传递给 DatagramPacket
构造函数的参数,而不是重用 DatagramPacket
,主要是缓冲区。
2018-10-18 09:29:11.103 WARN 5468 --- [nioEventLoopGroup-2-1] i.n.c.AbstractChannelHandlerContext : Failed to mark a promise as failure because it has failed already: DefaultChannelPromise@748a9b0e(failure: java.lang.IndexOutOfBoundsException: srcIndex: 0), unnotified cause: java.lang.IndexOutOfBoundsException: srcIndex: 0 at io.netty.buffer.UnsafeByteBufUtil.setBytes(UnsafeByteBufUtil.java:519) at io.netty.buffer.PooledUnsafeDirectByteBuf.setBytes(PooledUnsafeDirectByteBuf.java:260) at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1080) at io.netty.channel.nio.AbstractNioChannel.newDirectBuffer(AbstractNioChannel.java:481) at io.netty.channel.socket.nio.NioDatagramChannel.filterOutboundMessage(NioDatagramChannel.java:308) at io.netty.channel.AbstractChannel$AbstractUnsafe.write(AbstractChannel.java:877) at io.netty.channel.DefaultChannelPipeline$HeadContext.write(DefaultChannelPipeline.java:1391) at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730) at io.netty.channel.AbstractChannelHandlerContext.access$1900(AbstractChannelHandlerContext.java:38) at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.write(AbstractChannelHandlerContext.java:1081) at io.netty.channel.AbstractChannelHandlerContext$WriteAndFlushTask.write(AbstractChannelHandlerContext.java:1128) at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.run(AbstractChannelHandlerContext.java:1070) at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:446) at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:748)
io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1 at io.netty.buffer.AbstractReferenceCountedByteBuf.release0(AbstractReferenceCountedByteBuf.java:100) ~[netty-buffer-4.1.29.Final.jar!/:4.1.29.Final] at io.netty.buffer.AbstractReferenceCountedByteBuf.release(AbstractReferenceCountedByteBuf.java:84) ~[netty-buffer-4.1.29.Final.jar!/:4.1.29.Final] at io.netty.util.ReferenceCountUtil.release(ReferenceCountUtil.java:88) ~[netty-common-4.1.29.Final.jar!/:4.1.29.Final] at io.netty.channel.DefaultAddressedEnvelope.release(DefaultAddressedEnvelope.java:101) ~[netty-transport-4.1.29.Final.jar!/:4.1.29.Final] at io.netty.util.ReferenceCountUtil.release(ReferenceCountUtil.java:88) ~[netty-common-4.1.29.Final.jar!/:4.1.29.Final] at io.netty.channel.AbstractChannel$AbstractUnsafe.write(AbstractChannel.java:884) ~[netty-transport-4.1.29.Final.jar!/:4.1.29.Final] at io.netty.channel.DefaultChannelPipeline$HeadContext.write(DefaultChannelPipeline.java:1391) ~[netty-transport-4.1.29.Final.jar!/:4.1.29.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) [netty-transport-4.1.29.Final.jar!/:4.1.29.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730) [netty-transport-4.1.29.Final.jar!/:4.1.29.Final] at io.netty.channel.AbstractChannelHandlerContext.access$1900(AbstractChannelHandlerContext.java:38) [netty-transport-4.1.29.Final.jar!/:4.1.29.Final] at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.write(AbstractChannelHandlerContext.java:1081) [netty-transport-4.1.29.Final.jar!/:4.1.29.Final] at io.netty.channel.AbstractChannelHandlerContext$WriteAndFlushTask.write(AbstractChannelHandlerContext.java:1128) [netty-transport-4.1.29.Final.jar!/:4.1.29.Final] at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.run(AbstractChannelHandlerContext.java:1070) [netty-transport-4.1.29.Final.jar!/:4.1.29.Final] at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) [netty-common-4.1.29.Final.jar!/:4.1.29.Final] at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404) [netty-common-4.1.29.Final.jar!/:4.1.29.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:446) [netty-transport-4.1.29.Final.jar!/:4.1.29.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884) [netty-common-4.1.29.Final.jar!/:4.1.29.Final] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.29.Final.jar!/:4.1.29.Final] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]
关于java - 我应该重用 DatagramPacket 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33109579/
我正在使用 UDP 传输实现客户端/服务器应用程序。这是我的代码的一部分: 客户端: InetAddress serverAddress = ... int serverPort = ... Data
我需要从 DatagramPacket 2 原始数据类型和字节数组中恢复; 我需要获得一个 unsigned long long 和一个 int 作为原始数据类型...当我尝试使用 System.ar
这是在回答 BufferedWriter only works the first time 时出现的 据我对 Java Doc 的理解(网上的许多帖子都证实了这一点)DatagramPacket 不
尝试将接收到的 DatagramPacket 转换为字符串,但我遇到了一个小问题。不确定最好的方法是什么。 我将要接收的数据大部分长度未知,因此我在接收端设置了一些缓冲区[1024]。问题是,假设我发
以下代码产生“找不到合适的构造函数”错误。我无法找出原因。 try { Sock = new DatagramSocket(); Inet
因此,在寻找合适的库后,我决定创建自己的库,这是其中的一部分。 try { DatagramSocket serverSocket = new DatagramSocket(client_po
在我的 Java 应用程序中,我通过 DatagramSocket 接收 DatagramPacket。我知道数据包可以包含的最大字节数,但实际上每个数据包长度都不同(不超过最大长度)。 假设 MAX
这个问题已经有答案了: Can not access object's properties(methods) from within the run method! Java Multithread
我正在创建一个 java 多人游戏,它解决了 LAN 上客户端和服务器之间不断发送 DatagramPackets 的问题。 客户端的 DatagramSocket 将随机停止从服务器接收数据包,因此
我编写了一个 Java 线程(可运行)来基本上存储 DatagramPackets 列表,如果列表的大小 > 0,它将发送列表中的第一项。 看来,除非我在 run 方法中放置大量 sleep ,否则线
我正在编写战舰游戏,以便使用 UDP 在同一网络中的两台计算机之间进行游戏。当我做出连接时,它不会引发期望,但信息只会朝着一个方向发展。我的意思是,计算机 A 正确地将坐标发送到计算机 B,但计算机
我正在使用 DatagramPacket 和 DatagramSocket 来创建客户端/服务器情况。我有一个带有简单客户端和服务器的工作项目。客户端将向服务器发送一个序列化对象,仅此而已。 下面显示
在java库中,http://download.java.net/jdk7/archive/b123/docs/api/java/net/DatagramPacket.html 我想使用此构造函数构造
这个问题在这里已经有了答案: DatagramPacket to string (6 个答案) 关闭 6 年前。 下面的代码打印 [B@40545a60,[B@40545a60abc exp 但我想
我正在构建一个基于 UDP 的应用程序来接收和发送多个数据包。 我可以为每次发送构建一个新的 DatagramPacket,或者在我的应用程序的生命周期中回收一个实例。 重用 DatagramPack
我正在实现一个客户端-服务器程序,并希望我的客户端在等待 5 秒后没有来自服务器的 ACK-Answer,发回相同的数据包... 我是这样弄的,如果可以的话请告诉我.. dp = new Datagr
问题: 假设您的传输速度高达 10 MB/s,那么回收 DatagramPacket 对象(而不是每次发送数据包时创建一个新对象)是否是一个好主意? 故事: 我正在创建一个 LAN 文件同步应用程序,
我正在制作一个 Java 桌面应用程序,我在其中录制来自麦克风的语音,并在 LAN 中实时将此语音数据发送到另一个计算机系统,反之亦然。 我可以通过麦克风录制声音并输出到系统中的扬声器。现在使用 UD
我正在使用 Datagramsocket 和 DatagramPacket 制作一个简单的 server_client 应用程序。我想做的是:一个客户端将数据发送到服务器,服务器将这些数据发送到另一个
我是整个 UDP 的新手(因为每个人都喜欢 TCP),需要问几个关于 Java 实现的问题。 我需要有人告诉我是否: Java发送的DatagramPackets由于以下原因自动分片网络配置和数据大小
我是一名优秀的程序员,十分优秀!