通过套接字发送整数的bytearray

时间:2011-04-26 15:39:45

标签: c# sockets client bytearray

有没有办法在一个单字节数组中发送一系列int作为一个整体,在客户端,将4字节的字节数字切换为4字节以便我可以检索返回值?我一直在尝试,但到目前为止我只能通过一次发送1个值来实现。感谢。

public void SendData_Click(System.Object sender, System.EventArgs e)
    {
                int value = 500;
                int value2 = 1000;
                int value3 = 1500;

                int[] valueStore = new int[3];
                valueStore[0] = value;
                valueStore[1] = value2;
                valueStore[2] = value3;

                 for (int i = 0; i < 3; i++)
                {
                   byte[] array = BitConverter.GetBytes(valueStore[i]);
                   byte[] outStream = array;
                   serverStream.Write(outStream, 0, outStream.Length);
                   serverStream.Flush();
                 }

     }

2 个答案:

答案 0 :(得分:0)

您可以使用BinaryWriter将整数写入流,该流可以在发送之前轻松转换为字节数组。见下文:

int value = 500;
int value2 = 1000;
int value3 = 1500;
System.IO.MemoryStream ms = new System.IO.MemoryStream();
System.IO.BinaryWriter bw = new System.IO.BinaryWriter(ms);
bw.Write(value);
bw.Write(value2);
bw.Write(value3);
byte[] array = ms.ToArray();
serverStream.Write(array, 0, array.Length);
serverStream.Flush();

要阅读另一侧的值,请使用:

System.IO.MemoryStream ms = new System.IO.MemoryStream(array);
System.IO.BinaryReader br = new System.IO.BinaryReader(ms);
int value = br.ReadInt32();
int value2 = br.ReadInt32();
int value3 = br.ReadInt32();

答案 1 :(得分:0)

使用BinaryWriter

byte[] bytes;
using (var ms = new MemoryStream())
using (var bw = new BinaryWriter(ms))
{
    for (int i = 0; i < 3; i++)
        bw.Write(valueStore[i]);
    bytes = ms.ToArray();
}
serverStream.Write(bytes, 0, bytes.Length);
相关问题