当前位置:编程学习 > JAVA >>

java中TCP Socket发送时包太小,怎么办?

现在遇到这么一个情况,TCP的情况下
实时采集数据并通过SOCKET发送数据时,有时候发送的数量很大,有上千bit,但很多时候只有1个bit.

当然了,这个处理,可以交给接收端去通过缓存处理。

但显然不是一种理想的方式,因为经常发送的1个bit.严重占用了网络资源,现在造成接收到的数据然后处理,延迟非常厉害。

有什么办法,可以在发送端这边存多一点,再一次发送吗?

实时采集数据的大小,我这边是不好控制。
主要是发送策略上面,有没有办法做到累积一定程度再发。 --------------------编程问答-------------------- 我的应用场景是,视频采集和传输的场景。 --------------------编程问答-------------------- 池模型 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- BufferedWriter bufw =
     new BufferedWriter(new OutputStreamWriter(s.getOutputStream));

Byte [] b  = new Byte[1024*1024];


定义一个数组当做缓冲区!!! --------------------编程问答-------------------- TCP本身是有缓存发送策略的,如果楼主是一直会有连续的数据发送,TCP应该不会每次发一个bit这样的数据(应该是byte吧?发送一个bit,计算机怎么知道它应该是什么呢???)。
楼主看看socket的一些函数里面会不会有什么API提到或者是已经有这种可以自己控制TCP是不是可以手动缓存发送数据? --------------------编程问答-------------------- 自己做一个MessageQueue,当消息达到一定数量或者长度甚至超时时再一次性发送 --------------------编程问答-------------------- 数据采集跟发送异步进行,通过线程的wait和notify机制控制发送,同时设置wait最长时间,超过最长时间即使只有1位也发送。
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,