开发者

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);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜