【发布时间】:2010-11-14 12:47:14
【问题描述】:
我的代码有一个奇怪的问题,目前一切正常,除了发送部分。每当我尝试发送一个数据包时,它实际上会发送许多空数据包,我无法找出原因,我已经检查了调试器并且 SendPacket 函数只被调用了一次。谢谢大家!
【问题讨论】:
-
“空包”是什么意思?您如何在服务器端阅读? TCP 是一种流协议,它不会在数据包中“思考”。接收方可能需要多次调用 Receive 才能从单个发送中获取所有数据,类似地,由于 Nagle,多个发送最终可能会在单个接收中结束。您正在发送一个空数组(即全零)。如果您的服务器解释得很奇怪,或者使用一个小缓冲区调用 Receive,它看起来就像“多个数据包”。
-
哇。在所有这些小时之后..问题出在以下行 Client.BeginSend(buff, 0, buff.length, SocketFlags.None, new AsyncCallback(SendData), Client);它正在向服务器端应用程序发送 8192 字节.. 呃,我真是个白痴,无论如何谢谢你!
-
我可以看到您可能错过了它,但我之前的评论是 second 次,我告诉您您发送的数组全是零。 “无论如何。”
-
嗯,它不是空的。我只是寄错了尺码,所以寄的太多了。很抱歉造成误会,非常感谢您的帮助。英语不是我的母语,“无论如何感谢您的帮助”并不是什么不好的意思。
标签: c# tcp asynchronous send packet