HP-SOCKET 服务器和客户端实例 发出二进制byte转对象的数据 (HP-SOCKET网络通讯框架之二)

时间:2024-05-21 13:09:25

用HP-SOCKET实现了一个 服务器和客户端的实例。报文是二进制byte转对象的数据。

1、服务器程序运行。

2、客户端程序连接。

3、客户端程序每秒发一个数据包给服务器,这个数据包是一个结构(对象),里面包含三个字段,但被转换为二进制byte格式。

HP-SOCKET 服务器和客户端实例 发出二进制byte转对象的数据 (HP-SOCKET网络通讯框架之二)

 

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;
        }

 

全部配套源码:

https://pan.baidu.com/s/1RTQEli47KAv6M_-ZtBAi5Q