tcp传输字节数组
㈠ C#tcp如何发送图片二进制流,最好有实例,谢谢
序列化之后转成二进制流发送, 接收之后再转成图片
图片转成二进制流
MemoryStream ms = null;
try
{
ms = new MemoryStream();
bitmap.Save(ms, Bitmap.RawFormat);
byte[] byteImage = new Byte[ms.Length];
byteImage = ms.ToArray(); //发送byteImage
}
catch (ArgumentNullException ex)
{
throw ex;
}
finally
{
ms.Close();
}
二进制流转成图片
MemoryStream stream = null;
try
{
stream = new MemoryStream(byteImage); // byteImage就是接收到的二进制数组
bitmap = ((Image)new Bitmap(stream));
}
catch (ArgumentNullException ex)
{
throw ex;
}
catch (ArgumentException ex)
{
throw ex;
}
finally
{
stream.Close();
}
㈡ 有个Java 项目,通过Socket Tcp长连接通信方式向服务器发送消息。
你这消息头、消息体的结构格式都定下来了,总长度就是固定的啊?消息体的长度不是一共2+2+4+1=9个字节么?消息格式肯定要按照服务端的要求进行发送,明显服务端不是java的程序。。但是java里是没有Unsigned Integer这种数据类型的(java的stream操作里提供了一些unsigned的方法,或者自己写方法来生成对应的字节格式),你可以按照他的要求,使用字节数组封装好,然后发送。
针对这个示例消息,你可以:
创建一个长度为9的字节数组。把“9”变成byte放入前两个字节(前两个字节数据应该为:0x00, 0x09。这是第一个字段,长度),后面的字段数据以此类推。一个字段一个字段处理成服务器要求的格式。
然后把字节流发送给服务端。