Sending bytearray of integers through socket
Is there a way to send a series of int as a whole in one single bytearray and on the client side, cut the bytearray in 4 by 4 bytes so that I can retrieve the back values ? I am have been trying but so far I can only do it by sending 1 value at a time. Thanks.
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);
开发者_JAVA技巧 serverStream.Flush();
}
}
You could use a BinaryWriter to write the integers to a stream which can easily be converted to a byte array before sending. See below:
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();
To read the values on the other side use this:
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();
Use a 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);
精彩评论