C# 异步套接字问题
我的代码遇到了一个奇怪的问题,目前除了发送部分之外一切正常。 每当我尝试发送数据包时,它实际上会发送许多空数据包,我无法找出原因,我已经检查了调试器,并且 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我看到的是:您通过 OnPacketRecv 将数组 (
loginOutBuffer
) 传递给SendPacket
中的Socket.BeginSend()
,但您可以在OnPacketRecv
中立即清除它。当您传入数组时,
Socket.BeginSend()
不会复制该数组,因此它将发送现已清除的数组中的数据,导致另一端出现零。What I see: you pass an array (
loginOutBuffer
) toSocket.BeginSend()
inSendPacket
viaOnPacketRecv
, but you clear it immediately after inOnPacketRecv
.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.