公司现在有Delphi写的Socket服务端,结构体是
UserKind: integer;
UserCode: string[20];
UserName: string[30];
UserPwd: string[20];
UserDeptCode: string[20];
UserPlace: string[20];
AppHwnd: LongWord; //默认为0
ModuleVersion: string[30];
ComputerName: string[50];现在想问下,我用C#开发一个客户端,如何定义结构体?定义好了后如何转换为byte[]进行传输........
急死了,请各位大师们帮帮忙.......
UserKind: integer;
UserCode: string[20];
UserName: string[30];
UserPwd: string[20];
UserDeptCode: string[20];
UserPlace: string[20];
AppHwnd: LongWord; //默认为0
ModuleVersion: string[30];
ComputerName: string[50];现在想问下,我用C#开发一个客户端,如何定义结构体?定义好了后如何转换为byte[]进行传输........
急死了,请各位大师们帮帮忙.......
public int _number;
public string _text;
}在C#中 建议你使用string而不是char数组存储字符串
还有 请在每一个字段前加入public 否则你会访问不到,C#相比C是有访问修饰的 将一个对象序列化成二进制数组2007年08月21日 星期二 下午 10:53//将一个对象序列化成二进制数组
private byte[] SerializeToByte(ArrayList list)
{
//假如Arraylist为空,则返回null
if (list.Count == 0)
{
return null;
}
byte[] array = null;
try
{
//定义一个流
Stream stream = new MemoryStream();
//定义一个格式化器
BinaryFormatter bf = new BinaryFormatter();
//将Arraylist中的对象逐一进行序列化
foreach (object obj in list)
{
bf.Serialize(stream, obj);
}
array = new byte[stream.Length];
//将二进制流写入数组
stream.Position = 0;
stream.Read(array, 0, (int)stream.Length);
//关闭流
stream.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return null;
}
return array;
}
UserKind: integer;
UserCode: string[20];
UserName: string[30];
UserPwd: string[20];
UserDeptCode: string[20];
UserPlace: string[20];
AppHwnd: LongWord; //默认为0
ModuleVersion: string[30];
ComputerName: string[50]; 和这个结构里面的每个数据类型都有关系的,你公司的服务器端在接收到这个结构的时候一定会分析一下再做处理的,至于198位应该是规定好每次只能接收这么多数据,规范化,以免出错!这个结构里面的类型加起来应该是是198位