Compact Framework 3.5
Windows CE 6.0 R3
基于Atmel的BSP
情境:来自单个网关的多个设备连接到防火墙后面的Web服务。所有设备都使用相同的IP和源端口启动连接。
问题:基本上新设备正在尝试连接到Web服务,防火墙认为它是现有连接,发送RST数据包。设备按顺序递增源端口,再次尝试。如果有100个设备,则行中有100个RST,这需要很长时间。 (见http://www.fuzeqna.com/sonicwallkb/consumer/kbdetail.asp?kbid=8013&formaction=catalert)
根据文章,解决方案是随机化源端口。如何确定源端口以及如何设置它?我甚至不确定它在哪里(CE,CF,BSP)。
编辑:
找到了这个article about ServicePoint。 HttpWebRequest类上的ServicePoint看起来很有希望,但规范说:
Windows Mobile for Pocket PC,Windows 移动智能手机,Windows CE 平台注意:此属性为null 直到请求被发送为止 额外的网络传输 必需的。
答案 0 :(得分:1)
好的,所以问题似乎出现在winsock.dll中。我们最终做了什么实例化Socket类并将它随机地绑定到Loopback端点。