用HP-SOCKET实现了一个 服务器和客户端的实例。报文是二进制byte转对象的数据。
1、服务器程序运行。
2、客户端程序连接。
3、客户端程序每秒发一个数据包给服务器,这个数据包是一个结构(对象),里面包含三个字段,但被转换为二进制byte格式。
4、服务器接收数据包byte,把二进制socket报文还原为结构(对象),然后定时处理这个消息队列。
这里是重点查了很多资料,服务器和客户端程序不同,没有用同一个DLL,也没有改变命名空间。直接对报文结构还原,2018年春节晚上都在玩这个,终于解决了,原来在定义结构对象时候,字段必须指定为定长,像这样定义:
[StructLayout(LayoutKind.Sequential)]
public struct objecttext
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 500)]
public string logontime;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 500)]
public string Rtxt;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 500)]
public string Stxt;
}
全部配套源码: