两个站点,其中一个调用另一个站点网页。传送2进制数据。另一个站点会按传送的数据进行接收
部分代码
WebRequest req = WebRequest.Create("" + sSevHttp[0] + "Default.aspx");
req.Method = "POST";
req.ContentLength = sendbuff.Length;
Stream postStream = req.GetRequestStream();
postStream.Write(sendbuff, 0, sendbuff.Length); postStream.Close(); WebResponse res = req.GetResponse();
问题是这个sendbuff,定义为 byte[] sendbuff ;
需要传两组数据,第一组是二进制文件,第二组是一个字符串。如何做到在客户端把他们传上去,在服务端又分开呢?
byte 0-255,用什么能分割?
部分代码
WebRequest req = WebRequest.Create("" + sSevHttp[0] + "Default.aspx");
req.Method = "POST";
req.ContentLength = sendbuff.Length;
Stream postStream = req.GetRequestStream();
postStream.Write(sendbuff, 0, sendbuff.Length); postStream.Close(); WebResponse res = req.GetResponse();
问题是这个sendbuff,定义为 byte[] sendbuff ;
需要传两组数据,第一组是二进制文件,第二组是一个字符串。如何做到在客户端把他们传上去,在服务端又分开呢?
byte 0-255,用什么能分割?
关键是放什么特殊标志。这些字符串和二进制数据混在一起,放什么能分出来?
我目前的想法师把字符串放前边,这样分割时第一次找到的一定会是自己放的特殊标志。
可这方法显得有些笨,在分割时,没办法在不转字符的情况下直接得到字串长度,速度也会慢很多,
如果数据量大,无法使用。
第二种是给固定长度,但这样又加大了网络传输的数据量。
目前byte数组,都是0-255间的数,在服务端,如果放特别标志,就需要转义一次,但对所有数据都转义,这个工作量太大了。
所以目前倾向第二种方法。各位高手有没有好方法?
想知道有没有别的好方法
byte[] b = new byte[] { 2, 3, 4, 5, 6 };
string str = Convert.ToBase64String(b);
Console.WriteLine(str);
byte[] b2 = Convert.FromBase64String(str);