字符串问题
我现在有这样一些数据
string name=John; //姓名
string sex=male; //性别
string telephone=13645612378; //电话
1. 在发送端,
我想把这样的一些字符串组成一个大的字符串,然后在网络上传输,每一个字符串前加上一个标记,字符串末尾加一个E。
比如
string str1= "N "+name+ "S "+sex+ "T "+telephone+ "E ";
我把这样一个串在网络上由服务端传到客户端。
2. 在接收端
我收到上面这个串以后,
string str2= "NJohnSmaleT13645612378 ",然后把这个串读出来,去掉标记,再分别放到a、b、c三个串中。
比如
int n=str2.IndexOf( "N ");
int s=str2.IndexOf( "S ");
int t=str2.IndexOf( "T ");
int e=str2.IndexOf( "E ");
int length1=s-n-1;
int length2=t-s-1;
int length3=s-t-1;
string a=str2.Substring(1,length1);
string b=str2.Substring(s,length2);
string c=str2.Substring(t,length3);
3. 现在的问题是,在发送端有可能有些项没有,比如说没有telephone这一项,那采用上面的组串就有问题,同样在接收端解串也有问题,我该怎样解决?
------解决方案--------------------网络上传输建议使用XML~~
------解决方案--------------------分两个步骤:
1、规划传输协议:
在本例中主要是解决分隔符是否会在内容中使用,如果内容中包含了分隔符,应做怎样处理?比如用\S替代S,\\替代\。
现在通常用XML来传递,只是会有较多的非有效数据,对传输数据冗余要求不是非常高时建议采用。
2、编写编码和解码程序
如果自己定义了协议,就需要来实现。通常会用到正则表达式。
当然在.net里面
这样的结构业可以用序列化来实现,使用会更方便些。