繁体   English   中英

用Java将BinaryWriter转换为MemoryStream

[英]BinaryWriter to MemoryStream in Java

我有C#程序与另一个c#程序建立了TCP连接。 在c#程序中发送消息,我这样做:

private TcpClient client;

private void SendPulse()
{
    byte[] send_Buffer;
    port = 11000;

    while (true)
    {
        lock (locked)
        {
            try
            {
                BlockID = 1003;
                using (MemoryStream ms = new MemoryStream())
                {
                    using (BinaryWriter w = new BinaryWriter(ms))
                    {
                        NetworkStream stream = client.GetStream();
                        BlockID = 1003;
                        LengthMessage = 84;

                        // Header : 
                        w.Write(BeginMessage);
                        w.Write(BlockID);
                        w.Write(LengthMessage);
                        w.Write(RadarID);
                        w.Write(Time);
                        w.Write(ModeSystem);
                        w.Write(Icd_primary_var);
                        w.Write(Icd_secondary_ver);

                        // Data :
                        w.Write(StatusSystem);
                        send_Buffer = ms.ToArray();

                        stream.Write(send_Buffer, 0, send_Buffer.Length);

                        Thread.Sleep(3000); // Send pulse every 3 seconds.
                    }
                }
            }
            catch
            {

            }
        }
    }
}

这个想法是用二进制写程序写的,而不是将我们写的内存转换为字节数组并发送。

现在我有Java编程。 我也想这样做,我与C#有联系,但我不知道如何发送它。 我做了DataOutputStream,但是它单独发送了每个参数,我希望所有字节都在1个字节数组中,就像在C#代码中一样。

感谢您的帮助。

如果要使用DataOutputStream,则可以将其包装在BufferedOutputStream周围,并在完成后将其flush()。

或者,您可以使用NIO ByteBuffer并将其写入套接字。

为了使消息更容易解码,我会在开头添加长度,除非您知道每条消息都是该长度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM