两个站点,其中一个调用另一个站点网页。传送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,用什么能分割?

解决方案 »

  1.   

    字符串也可以转为byte []:byte [] strbyte=System.Text.Encoding.Unicode.GetBytes(str);然后使用Array.Copy方法就可以将这些数据复制到发送缓冲区中了,至于如何区分,可以放特殊标志,或者附加上对应数据段的长度,接收方可以根据长度数据来分离了。
      

  2.   

    放特殊标志
    关键是放什么特殊标志。这些字符串和二进制数据混在一起,放什么能分出来?
    我目前的想法师把字符串放前边,这样分割时第一次找到的一定会是自己放的特殊标志。
    可这方法显得有些笨,在分割时,没办法在不转字符的情况下直接得到字串长度,速度也会慢很多,
    如果数据量大,无法使用。
    第二种是给固定长度,但这样又加大了网络传输的数据量。
    目前byte数组,都是0-255间的数,在服务端,如果放特别标志,就需要转义一次,但对所有数据都转义,这个工作量太大了。
    所以目前倾向第二种方法。各位高手有没有好方法?
    想知道有没有别的好方法
      

  3.   

    传递Base64string
    byte[] b = new byte[] { 2, 3, 4, 5, 6 };
                string str = Convert.ToBase64String(b);
                Console.WriteLine(str);
                byte[] b2 = Convert.FromBase64String(str);
      

  4.   

    想不出好办法。我是在前边放了固定长度的byte数据。