C# 异步套接字问题

发布于 2024-07-29 11:12:19 字数 113 浏览 7 评论 0原文

我的代码遇到了一个奇怪的问题,目前除了发送部分之外一切正常。 每当我尝试发送数据包时,它实际上会发送许多空数据包,我无法找出原因,我已经检查了调试器,并且 SendPacket 函数仅被调用一次。 谢谢大家!

I'm having a weird problem with my code, at the moment everything works fine, except the sending part. Whenever I try to send a packet it actually sends many empty packets, and I can't find out why, I've checked with the debugger and the SendPacket function is being called only once. Thanks to everyone!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

涫野音 2024-08-05 11:12:19

我看到的是:您通过 OnPacketRecv 将数组 (loginOutBuffer) 传递给 SendPacket 中的 Socket.BeginSend(),但您可以在 OnPacketRecv 中立即清除它。

当您传入数组时,Socket.BeginSend() 不会复制该数组,因此它将发送现已清除的数组中的数据,导致另一端出现零。

What I see: you pass an array (loginOutBuffer) to Socket.BeginSend() in SendPacket via OnPacketRecv, but you clear it immediately after in OnPacketRecv.

Socket.BeginSend() doesn't make a copy of the array when you pass it in, so it will send the data in the now-cleared array, resulting in zeros coming out the other end.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文