Async BeginSend / EndSend不会发送尽可能多的数据

时间:2011-04-06 11:34:04

标签: .net sockets

我有一个我正在玩的嵌入式设备;从PC发送一些数据。对于嵌入式设备,我不是在谈论WindowsCE / Linux,而是一个具有蹩脚TCP-IP堆栈和几KB内存的微控制器。

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

有什么问题?

在PC上的

BeginSend和EndSend都可以正常工作,并且在BeginSend中推送的数据总长度与返回的EndSend长度相同。但是检查Wireshark发送的数据[字节数?]表明没有应该有的数据包,这个差异是几KB。因此,BeginSend和EndSend的工作方式就好像已经完成但实际上并没有完成。

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

我当然正在使用TCP套接字。

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

我应该注意哪些问题?

1 个答案:

答案 0 :(得分:0)

  

我有嵌入式设备,我正在播放从PC发送一些数据。白衣嵌入式设备,我不是在谈论的WindowsCE / Linux的,但丝毫microcontoller蹩脚的TCP-IP协议栈和RAM几KB。

您是从.Net应用程序发送到此设备吗?

  

和BeginSend上EndSend PC都工作而不会错误和在BeginSend推送的数据的总长度是相同的总返回EndSend长度。但送白衣的Wireshark数据的检查数量显示,没有尽可能多的数据包,应该有,如果几KB这种差异。

你是怎么得出这个结论的?

  

从WebServer(IIS)发送许多数据可以正常工作。

请详细说明你的意思?您是否通过HTTP发送到嵌入式设备并且有效?

  

我应该注意哪些问题?

有什么问题?嵌入式设备无法接收所有内容吗?如果是这样,你是如何得出这个结论的?