网络程序中报文格式:如果传输一个预先规定好格式的byte[].
用C#写一个网络程序 ,约定好了报文格式:比如(只是一个格式例子)
a字串长度(4Bytes)|a字串|b字串长度|b字串|c数字(2Byte)
请问如何按照上面的规定,把内容写入byte[],传输到对方主机,在如何还原?(Unicode编码格式)
string a = "C Sharp can go."
string b = "perhaps more futher!";
Int16 c = "911"
byte[] data ......
传输过去后,应该如何做,得到这几个串和数字.
原来C++中可以操作指针实现,C#中怎么办了。希望给出各种方案,包括unsafe的。
多谢大家指教,凡是有建设性意见的都有分,最好给出比较完整的例子。可以在开贴给100分。谢谢大家。
问题点数:100、回复次数:3Top
1 楼gaodz(慕白)回复于 2002-09-14 16:34:04 得分 80
根据此结构定义一个STRUCT
struct Data{
long Len_a;
string a;
long Len_b;
string b;
int16 c;
} Data_Send[];
发送时以STRUCT为单位一个一个的发送,接受方接收后将接收到的数据放到BYTE1[]中。编写数据还原函数。
Struct Data Data_Rec;
long i,lTemp,lPos;
for(i=0;i<4;i++)
{
lTemp=byte1[i];
lTemp=lTemp<<(8*i);
Data_Rec.Len_a=Data_Rec.Len_a+lTemp;
}
char * c;
for(i=0;i<lTemp;i++)
{
c[i]=(char)byte1[i+4];
}
string s=string(c,4,lTemp);
Data_Rec.a=s;
lPos=lTemp+4;
...Top
2 楼hillfree(比较土,请原谅)回复于 2002-09-15 17:38:01 得分 0
谢谢 gaodz(慕白) 的指教,
用了指针是不是就是unsafe代码了吧?
需要用什么额外的引用吗?
有没有其他的方法?
我在用这样的方法可以吗:
NetworkStream netStream = new NetworkStream(mySocket);
StreamReader sr = new StreamReader(netStream, Encoding.Unicode);
string a = "name John Woo";
sr.Write(a.Length);
sr.Write(a);
string b = "Wind walker";
sr.Write(b.Length);
sr.Write(b);
int16 c = 911;
sr.Write(???);
....
可是,我接收到的stream,怎么还原呢?
请大家指教.谢谢Top
3 楼yarshray(saga jion(心飘情落))回复于 2002-09-16 14:26:17 得分 20
你既然知道length把写改为读不就可以了!Top




