异步BeginSend/EndSend不发送尽可能多的数据,因为它说

问题描述:

我有一个嵌入式设备,我正在玩;从PC发送一些数据。对于嵌入式设备,我不是在谈论WindowsCE/Linux,而是一款带有蹩脚的TCP-IP协议栈和几KB内存的微控制器。异步BeginSend/EndSend不发送尽可能多的数据,因为它说

当我尝试发送多个数据包并最终泛滥设备驱动程序时,会发生此问题。

什么问题?

PC上的BeginSend和EndSend都可以正常工作,并且在BeginSend中推送的数据的总长度与返回的EndSend长度相同。但是检查使用Wireshark发送的数据的数量[字节?]表明没有应该有的数据包数量,这个差别只有几KB。所以,BeginSend和EndSend的工作就好像他们完成了一样,但他们实际上没有。

我试过切换Socket.NoDelay,但它似乎不起作用。即使我设置Socket.NoDelay = true,发送更大的数据包,所以它看起来好像没有效果。

我当然使用TCP套接字。

从WebServer(IIS)发送大量数据的工作正常。

我应该知道有什么问题吗?

+0

你为什么在谈论预期的数据包数量?使用TCP时,使用的数据包数量可能会有所不同。 – CodesInChaos 2011-04-08 13:26:02

我有嵌入式设备,我正在玩从PC发送一些数据。惠普嵌入式设备我不是在谈论WindowsCE/Linux,而是微控制器白衣蹩脚的TCP-IP堆栈和几KB的RAM。

您是否正在从.Net应用程序发送此设备?

PC上的BeginSend和EndSend都可以正常工作,并且在BeginSend中推送的数据的总长度与返回的EndSend长度的总和相同。但是检查发送的数据的数量Wireshark显示没有应该有的数据包数量,如果有几KB,这个差别就会有所不同。

你是如何得出这个结论的?

从WebServer(IIS)发送很多数据的工作正常。

请说明一下你的意思?你是否通过HTTP发送到嵌入式设备并且工作正常?

有没有我应该注意的问题?

什么问题?嵌入式设备是否没有收到任何东西?如果是这样,你是如何得出这个结论的?