日期:2014-05-19  浏览次数:20991 次

字符串问题
我现在有这样一些数据

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里面
这样的结构业可以用序列化来实现,使用会更方便些。