注意第一行和第二行,每次for循环,都使用同一个buffer,这样当接收数据时,会抛出异常。可以将buffer的声明放在for循环的里面。另外注意在开发的时候,最好将所有异常的堆栈打出,这样便于及早发现问题。
java 代码
- public void run() {
- byte[] buffer = new byte[16384];
- DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
- try {
- for (;;) {
-
-
- if(!pool.isShutdown() && !pool.isTerminated()) {
- mcastSocket.receive(packet);
- pool.execute(new Handler(packet));
- } else {
- LOG.info("JxtaMulticastSocketService is now shutdown.");
- }
-
- }
- } catch (IOException ex) {
- ex.printStackTrace();
- pool.shutdown();
- }
- }
java 代码
- java.io.IOException: Datagram can not accomodate message of size :247
- at net.jxta.socket.JxtaMulticastSocket.receive(JxtaMulticastSocket.java:432)
- at jxtamessenger.background.JxtaMulticastSocketService.run(JxtaMulticastSocketService.java:85)
- at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
- at java.lang.Thread.run(Thread.java:619)
分享到:
相关推荐
关于recv函数在不知道接收数据大小时如何申请buffer
linux c语言实现的循环buffer机制,可以在多线程之间传递共享buffer队列
根据wiki:循环缓冲区、循环队列、循环缓冲区或环形缓冲区是一种使用单个固定大小缓冲区的数据结构,就好像它是端到端连接的一样。这种结构很容易缓冲数据流。 68747470733a2f2f75706c6f61642e77696b696d656469612...
实现多线程读写缓冲区的小例子。一个任务读文件并写入缓冲区,一个任务从缓冲区读内容写到文件,缓冲区可循环。读大文件请稍微改下缓冲区大小。
C++实现的两种方式的循环Buffer,一种需要拷贝4次,一种需要拷贝2次,支持两线程间的读写,还可以改为两进程间的读写(需要修改成进程间的互斥方式)
4.当写入数据的长度大于ringbuffer的可写入长度时,多余的数据将会丢弃。所以写入数据前,先判断ringbuffer的可写入长度。另外程序包含示例。 支持windows平台的vs与linux平台的clion,语言级别实现,与平台无关。 ...
4.当写入数据的长度大于ringbuffer的可写入长度时,多余的数据将会丢弃。所以写入数据前,先判断ringbuffer的可写入长度。 另外程序包含示例。 支持windows平台的vs与linux平台的clion,语言级别实现,与平台无关。 ...
用Java语言实现的利用Protocol Buffer进行数据保存的实例,具体的体现是一个学生记录管理。一个Demo,为了帮大家理解Protocol Buffer的。
关于recv函数buffer大小的设置,当不知道数据长度时如何设置buffer长度,以及buffer长度对实际接收长度的影响。
C语言实现的循环Buffer
中断处理例程使用循环缓冲区来缓冲接收和发送的数据。 配置 定义启用的 USART 和缓冲区大小 UART_RXn_BUFFER_SIZE和UART_TXn_BUFFER_SIZE符号定义循环缓冲区的大小(以字节为单位)。这些值必须是 2 的幂。您可能...
Rt-thead studio软件下使用ringbuffer
如下图1所示,有多个PUT操作要不断循环地向Buffer1送字符数据,有Move1操作不断地将Buffer1的数据取到Buffer2,Move2操作不断地将Buffer1的数据取到Buffer3,有多个GET操作要不断地从Buffer2和Buffer3中取数据。...
使用 Protocol Buffer 可以解决这种语言和平台之间的数据交换问题。 Protocol Buffer 的优点 1. 语言中立:Protocol Buffer 可以在不同的语言和平台之间进行数据交换,例如 Java、C++、Python 等。 2. 平台中立:...
支持android平台4.1以上,播放TS格式文件,支持H264/AAC,欢迎测试。
在通信程序中,经常使用环形缓冲区作为数据结构来存放通信中发送和接收的数据。环形缓冲区是一个先进先出的循环缓冲区,可以向通信程序提供对缓冲区的互斥访问。 1、环形缓冲区的实现原理 环形缓冲区通常有一个读...
循环缓冲-单通道等间隔输出多个数据点的vi程序
Buffer Cache 是 Oracle 中的一种缓存机制,负责将磁盘上的数据 block 读取到内存中,以提高数据库的访问速度。在本文中,我们将详细介绍 Buffer Cache 的工作原理、状态、管理和优化方法。 Buffer Cache 的工作...
使用场景为一个线程写一个线程读完全不需要锁。可以设定buffer的初始块及数量,初始块是固定大小的,当需要扩环时会动态创建块即不像其它的库块满了就写失败了,当释放时会将动态创建的块还给系统,初始块还给自己的...
C语言头文件 BUFFERC语言头文件 BUFFERC语言头文件 BUFFERC语言头文件 BUFFERC语言头文件 BUFFERC语言头文件 BUFFERC语言头文件 BUFFERC语言头文件 BUFFERC语言头文件 BUFFERC语言头文件 BUFFERC语言头文件 BUFFERC...