BinaryWriter to MemoryStream in Java

本文关键字:Java in MemoryStream to BinaryWriter | 更新日期: 2023-09-27 18:29:12

我有一个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,但它只发送每个参数,我希望所有的字节都在一个字节数组中,就像C#代码中一样。

谢谢你的帮助。

BinaryWriter to MemoryStream in Java

如果您想使用DataOutputStream,您可以将其封装在BufferedOutputStream中,并在完成后对其进行flush()处理。

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

为了让消息更容易解码,我会在开头添加长度,除非你知道,否则每条消息都是这个长度。