缓冲区java被阻止到1024?

时间:2017-07-10 09:38:07

标签: java android buffer

我想在缓冲区上存储超过1024个字节。实际上我试图从rows1 = [x for x in rows if x and x[6] and x[6][0] != "$"] 脚本中获取价值。

python脚本中的33个值有效:

python

如果我尝试发送超过33个值,则不起作用。我的程序说收到了29个字节。

我认为问题来自缓冲区。我试图将缓冲区修复为65536,但它没有任何改变。它是否存在任何解决方案,像我的缓冲区库存更多数据?

python代码:

33*15(digits)*2(2 types of values)=990 bytes

java代码:

from pylab import*
from rtlsdr import*
from bluetooth import*
import sys

#configure device
sdr= RtlSdr()
sdr.sample_rate=double(sys.argv[3])
sdr.gain=double(sys.argv[2])
sdr.center_freq=double(sys.argv[1])
NFFT=34

#Bluetooth connection

server_sock=BluetoothSocket(RFCOMM)
server_sock.bind(("",PORT_ANY))
server_sock.listen(1)

port=server_sock.getsockname()[1]
uuid="94f39d29-7d6d-437d-973b-fba39e49d4ee"
client_sock,client_info=server_sock.accept()

while(1):
        samples=sdr.read_samples(256*1024)
        result=psd(samples,NFFT, Fs=sdr.sample_rate/1e6,    Fc=sdr.center_freq*1e6/1e6)
        tab_freq=(result[1]/1e6) 
        value_freq=str(tab_freq)[1:-1]
        value_list=[format(float(v), ".10f") for v in value_freq.split()]
        value_freq2= "\n".join(value_list)
        tab_pxx=result[0]
        value_pxx=str(tab_pxx)[1:-1]
        client_sock.send(value_freq2+'\n'+'\n'.join(value_pxx.split()))

感谢您的帮助。

1 个答案:

答案 0 :(得分:-1)

可能你输了flush你的缓冲区(发件人)。

如果不刷新缓冲区,则无法写入输出。来自javadoc

  

刷新此输出流,强制写出任何缓冲的输出字节。 flush的一般合同是调用它表示,如果先前写入的任何字节已被输出流的实现缓冲,则应立即将这些字节写入其预期目的地。

虽然答案与java代码有关,但任何缓冲区的工作方式都相同。

尝试在行后添加你的python代码:

client_sock.send(value_freq2+'\n'+'\n'.join(value_pxx.split()))

显式调用flush(我不完全知道python中的语法)。