惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
人人都是产品经理
人人都是产品经理
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
GbyAI
GbyAI
博客园 - 司徒正美
美团技术团队
Vercel News
Vercel News
IT之家
IT之家
U
Unit 42
Y
Y Combinator Blog
罗磊的独立博客
Microsoft Security Blog
Microsoft Security Blog
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
V
Visual Studio Blog
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
MyScale Blog
MyScale Blog
博客园 - 叶小钗
A
About on SuperTechFans
WordPress大学
WordPress大学
Hugging Face - Blog
Hugging Face - Blog
B
Blog RSS Feed

C#

.NET 11 的 async 性能改进过于逆天 - V2EX macos10.15 上如何配置 vscode C#环境 asp net core 的工作站模式和服务器模式的区别 C#上位机开发是用 winform 那种传统工业风还是 WPF 现代风 paddleocr 的 C#集成问题 C#中异步相关的问题 .NET 换新的异步编程模型了,性能很强 想念 C# 200 块有偿求助 C#高速读取串口,导致软件闪退的问题。 老师,我太想进步了——关于 C#学习 visual studio 2022 代码提示消失 Cursor 生成的代码有个大坑,排查了一晚上才找出原因 C# 有哪些显著的缺点? 有没有 Sematic Kernel 可以落地的应用推荐? 请教下 C#有没有办法用装饰器全局监控方法执行时间 想用 c#的 mvc 实现一个功能. Unity 双击 C#脚本默认打开 Visual Studio 没有代码提示如何解决? 请问 c#有没有一些能规范学习的生产管理系统开源项目? C#串口通信问题 求教 C# 怎么同时交叉编译 windows Linux mac ?跟 go 一样 ClosedXML 如何对一列数据设置高亮重复项?(高亮重复项是 Excel 的一种功能;不能手动给重复单元格设置背景颜色,这样的话用户删除重复项后不会自动去除高亮) 求推荐软件开发练习项目的教学视频或书籍 如何在 visual studio 2022 中新建单元测试项目时默认使用最新版本? C#有像 C++的 libevent 同样定位的高性能跨平台网络库吗? 求助,如何正確劫持系統 DLL 調用 C#生态里有啥简单一点的容易上手的开源后台管理系统吗? .NET6 HttpClient 无反应也不超时? 关于.NET6 httpclient 用 IPV6 还是 IPV4 的疑问 关于 C#调用 DLL 的疑惑 C#程序员开发手机页面有什么适合的 UI 框架?
使用 C#的 HPSocket 的一个问题
exqibao · 2023-07-17 · via C#

使用 hpSocket 写程序分服务端和客户端,服务端收到客户端的一个消息,服务端会响应多个信息给客户端,但客户端只收到部分信息,收到的包都是完整的。

服务端断点时,一个一个看客户端又能收到,关闭断点有低概率收到完整,大概率又收不完全。

其实循环里面只用发一次,调试故意发 5 次,至少收到 1 次,但没试过 5 次都全收到,除非卡着断点一个一个 Send 走。

            // 创建其他玩家
            foreach (var model in DALManager.Instance.UserDal.GetAllUserModel())
            {
                Server.Send(connid, MessageType.Type_User, MessageType.User_Create_S, model.ID, model.UserInfo.ModelID,
                    model.Point);
                Server.Send(connid, MessageType.Type_User, MessageType.User_Create_S, model.ID, model.UserInfo.ModelID,
                    model.Point);
                Server.Send(connid, MessageType.Type_User, MessageType.User_Create_S, model.ID, model.UserInfo.ModelID,
                    model.Point);
                Server.Send(connid, MessageType.Type_User, MessageType.User_Create_S, model.ID, model.UserInfo.ModelID,
                    model.Point);
                Server.Send(connid, MessageType.Type_User, MessageType.User_Create_S, model.ID, model.UserInfo.ModelID,
                    model.Point);
            }

封装的 Send 方法;

        public static void Send(IntPtr connid, byte type, int command, params object[] content)
        {
            Message message = new Message(type, command, content);
            byte[] bytes = Message.ToBytes(message);
            server.Send(connid, bytes, bytes.Length);
        }

hp-socket 的代码了;

    public bool Send(IntPtr connId, byte[] bytes, int length)
    {
      GCHandle gcHandle = GCHandle.Alloc((object) bytes, GCHandleType.Pinned);
      bool flag = HPSocket.Sdk.Server.HP_Server_Send(this.SenderPtr, connId, gcHandle.AddrOfPinnedObject(), length);
      this.SysErrorCode.Value = flag ? 0 : Sys.SYS_GetLastError();
      gcHandle.Free();
      return flag;
    }

似乎连续总是会丢失后面的,有大佬知道问题在哪吗?