这是我忘服务器端发送数据的代码块
string str5 = "abc";
byte[] message = Encoding.UTF8.GetBytes(str5);
client.BeginSend(message, 0, message.Length, SocketFlags.None, new AsyncCallback(SendData),client);现在的问题是,我比如有10个字段,有string,int等类型,如果一次性发到服务器端该怎么办?
服务器端接受的方式是:比如第一到第十个字符是我发送到第一个字段,从第十一到第二十个字符是我发送到第二个字段。以此类推。是可以组成byte[]数组的方式一起发送吗?如果能,怎么发送呢?如果用XML的方式我倒是知道,可服务器端并不是解析XML的方式来接受的。请教一下高手
string str5 = "abc";
byte[] message = Encoding.UTF8.GetBytes(str5);
client.BeginSend(message, 0, message.Length, SocketFlags.None, new AsyncCallback(SendData),client);现在的问题是,我比如有10个字段,有string,int等类型,如果一次性发到服务器端该怎么办?
服务器端接受的方式是:比如第一到第十个字符是我发送到第一个字段,从第十一到第二十个字符是我发送到第二个字段。以此类推。是可以组成byte[]数组的方式一起发送吗?如果能,怎么发送呢?如果用XML的方式我倒是知道,可服务器端并不是解析XML的方式来接受的。请教一下高手
你最后传的字符串就是:str1|str2|str3.......
服务器段接受后,转换成string 类型,在用 "|"分割就行了啊
字节流也得有一定的格式啊,比如你说的那个“第一到第十个字符是我发送到第一个字段,从第十一到第二十个字符是我发送到第二个字段”,如果就这么简单的话,那你就这么填充然后send就行了
b[0] =
b[1] =
b[2] =
...
string str1="abc";
srting str2="123";
然后要把这2个字段一次性发过去?
还有没有复杂类型吧?
先确定下再帮你解决问题..
----------------
hopewoo
花开花落,花落花开嗯,就是你所说的意思。还有INT.CHAR.DOUBLE这三个类型。但不能把这些字段拼成一个string发过去
我可以给你举个例子,多种数据转换成一个byte数组.
比如我要传1个int 1个double,1个byte,一个字符"CMD",
一般的,int 是4个字节, double是8个字节,byte当然是一个字节了(废话?),"CMD"的话是3个字节.
这样要传输的数据一共是4+8+1+3=16个字节.
然后这么来byte[] data=new byte[16];
byte[] b_int=BitConverter.GetBytes(int);
byte[] b_double=BitConverter.GetBytes(double);
byte[] b_string=Encoding.Default.GetBytes("CMD");
int index;
index=0;
Array.Copy(b_int,0,data,0,b_int.Length);
index+=b_int.Length;
Array.Copy(b_double,0,data,index,b_double.Length);
index+=b_double.Length;
Array.Copy(byte,0,data,index,1);
index++;
Array.Copy(b_string,0,data,index,b_string.Length);到这个时候,data里面前1-4个取出来就表示int字段,5-12表示double字段,13个表示一个byte字段,14-16表示"CMD"字段.