代码之家  ›  专栏  ›  技术社区  ›  Alex

您能阻止缓冲输出流(BufferedOutputStream,java)传输吗?

  •  1
  • Alex  · 技术社区  · 7 年前

    我试图使用以下命令将字符串写入OutputStream

    public  SSLSocket         mClient;
    private BufferedOutputStream  mOutputStream;
    
    ....
    
    mOutputStream = new BufferedOutputStream( mClient.getOutputStream() );
    
    public synchronized void WriteString( String asciiString )
    {
        mOutputStream.write( asciiString.getBytes() );
        mOutputStream.write( 0 );
        mOutputStream.flush();
    }
    
    ....
    
    WriteString( "BASEL ..." );
    

    在这个调用中,写入操作在写入“B”后立即刷新缓冲区,从而在流上发送两个数据包。第一个是单个字符;第二个包含字符串的其余部分。这在Linux上正常工作,直到服务器最近更新。

    private DataOutputStream  mOutputStream;
    mOutputStream.writeBytes(asciiString);
    mOutputStream.writeByte(0);
    mOutputStream.flush();
    

    同样的结果。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Alex    7 年前

    问题在于SSLSocket中CDC编码实现的变化。为了避免安全问题,它总是在第一个字节后中断消息。

    看见 stackoverflow.com/a/33360518/4454122

    推荐文章