4

我正在为 Blackberry 编写一个最初在标准 J2ME 中实现的应用程序。网络连接是使用Connector.open("socket://...:80/...")而不是完成的http://

现在,我已经使用这两种方法实现了连接,而且似乎有些时候,socket 方法的响应速度更快,而有些时候它根本不起作用。两者之间有显着差异吗?大多数情况下,我想要实现的是连接的响应以获得平滑的进度条。

4

4 回答 4

5

Blackberry 的实现httphttps提供了更多用于连接到目标服务器的选项socket,当然,它还为您实现了所有 HTTP 协议内容。我没有对它们进行基准测试,但是在某些情况下直接TCP 通过socket会更快,特别是如果在端口 80 上侦听的不是HTTP 服务器(没有协议开销) ,这在一定程度上是有意义的

过去,我在与不同的网络供应商打交道时遇到过困难,有些需要deviceside=true其他供应商,deviceside=false而且直到第一个对该网络的支持电话打进来之前,我才真正知道。

大多数情况下,我想要实现的是连接的响应以获得平滑的进度条。

请原谅我这么说,但“平滑的进度条”是“给百合镀金” - 很好看,但对应用程序的功能、可靠性或健壮性并不重要。选择更健壮并减少代码大小的东西 - 可能http在这种情况下。

于 2008-11-13T13:43:47.273 回答
2

由于两者都通过网络运行,我认为您不能保证进度条顺畅。如果您提醒此人留在一个地方,您可能会有更多机会保持联系;)

与 HTTP 连接相比,套接字连接的开销更少。事实上,HTTP 连接是通过套接字连接运行的。您可以利用减少的套接字连接开销来提高响应速度,但与使用 HTTP 相比,您可能需要做更多的工作。API 更底层,因此编码更复杂。

于 2008-11-13T03:57:30.443 回答
1

BlackBerry 上的套接字和 HTTP 连接之间的一个区别是,在 BES 和 BIS 连接的情况下,HTTP 连接可以通过 HTTP 代理透明地路由。

于 2008-11-19T16:46:19.477 回答
0

理论上套接字会更快,但是您负责管理滚动您自己的协议的开销(取决于复杂性)。尽管套接字更轻量级,但我发现 HTTP 及其附带的所有功能大大减少了头痛。

于 2009-01-03T19:07:04.853 回答