我有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
{
}
}
}
}这样做的目的是用二进制编写器编写,而不是将我们写入的内存转换为字节数组并发送。
现在我有编程。我也想这么做,我和C#有联系,但我不知道怎么发送。我做了DataOutputStream,但是它只发送每个参数,我希望所有的字节数组与c#代码完全一样。
谢谢你的帮助。
发布于 2014-11-05 19:31:46
如果要使用DataOutputStream,可以将其包装在BufferedOutputStream周围,并在完成时刷新()它。
或者您可以使用NIO ByteBuffer并将其写入套接字。
为了使消息更容易解码,我会将长度添加到开头,除非您知道每条消息都是该长度。
https://stackoverflow.com/questions/26765206
复制相似问题