我正在寻找的最佳方式的建议发送二进制数据发送从远程GPRS设备/接收数据,通过端口80通过HTTP
创建一个随机端口工作正常上一个普通的TCP套接字,但许多运营商只允许端口80 HTTP流量通过他们的代理,然后期望HTTP ASCII数据(为此它们可以根据需要修改头文件)
因此,我的设备是否应该在持久http连接上创建POST请求,然后接收base64编码的响应来自Web服务?我不确定移动代理在涉及二进制数据时的行为方式。是否有推荐的方法来执行此操作?
我可以调整设备的固件和服务器端应用程序。
[编辑]
我想知道是否有标准(或多或少)的方式来做到这一点。对于各种数据记录和工业系统,需要通过套接字连接发送大量二进制数据。对于以太网连接,通常只有适应某些防火墙的问题,但持久的二进制连接在任意端口上都没有问题。
然而,移动互联网服务提供商往往只限制其80端口的“数据计划”。他们也冒昧弄砸了HTTP标头,并且可能还有HTML数据本身。这是我需要找出潜在的陷阱和方法来规避它们。
- 简单地发送base64编码数据的工作?
- 如何处理HTTP会话?任意套接字可以长时间保持活动状态,但HTTP动词通常是短暂的。这是否意味着我需要为每个数据包创建一个新的连接?或者有没有办法通过单个连接发送服务器响应?
- ISP代理如何处理数据或头文件?例如,即使服务器关闭它,代理服务器有时也可以保持连接处于活动状态。
+1谢谢。一个小小的说明:*移动运营商通常会限制对他们理解的内容类型的响应的篡改* - 这是否意味着我应该使用他们无法理解的内容类型? – Groo
移动运营商所做的转换通常针对媒体类型,他们知道可以返回“等效”响应。例如压缩JPEG图像或将CSS/Javascript内联到HTML文件中。如果您使用专有格式发送数据,则可以使用类似“application/vnd.company-name”的媒体类型。文件类型“ - 这不太可能由中介转变,因为他们不理解格式。 – johnstok
@johnstok Content-Length标头指定以字节为单位的任何数据的长度。因此,无论数据是符合标准还是专有,运营商都可以转发这些字节。 – ardsrk