PDA

View Full Version : نوشتن چندين int داخل يك []byte



EhsanTC
شنبه 04 خرداد 1387, 19:59 عصر
سلام
مي خوام يه remote procedure call بنويسم كه تابعي براي جمع 2 عدد را شبيه سازي كنه اما يه مشكل وجود داره اون هم اينه كه فكر مي كنم در هنگام تبديل stream به []byte دچار مشكل هستم.در سمت سرور با اين استثنا مواجه مي شوم
unable to read beyond the end of stream
كدمم هم اينه



public static int Add(int val1, int val2, IPEndPoint server)


{
byte[] bytedValues = new byte[8],
temp = new byte[4],
result = new byte[4];


//a byte buffer for values
MemoryStream BufferOfValues = new MemoryStream();
BinaryWriter bw = new BinaryWriter(BufferOfValues);


bw.Write(val1); //convert val1 to byte
//add byted value1 to the buffer


bw.Write(val2); //convert val2 to byte
//add byted val2 to the buffer


//put bytes from binary stream in an array
bytedValues = BufferOfValues.ToArray();



Socket remoteServer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
remoteServer.SendTo(bytedValues,server);


IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); //create new IPEndPoint for recive sender
EndPoint remoteInformation = (EndPoint) sender; //informations


remoteServer.ReceiveFrom(temp, ref remoteInformation); //recivie informations and put it to the
//temp array


return BitConverter.ToInt32(temp, 0);


}


اگه مي شه در مورد قرار دادن چندين int داخل يك []byte بدون از دست دادن اطلاعات توضيحي بديد.با تشكر

molana alavi
شنبه 04 خرداد 1387, 22:03 عصر
شما می تونید با کد زیر عدد صحیح رو تبدیل به آرایه ای از بایتها کنید

int intTemp = 7;
byte[] aryByteInt = BitConverter.GetBytes(intTemp);



و با کد زیر آرایه ای فوق رو تبدیل به عدد صحیح کنید

int intTemp = BitConverter.ToInt32(aryByteInt, 0);