【问题标题】:Good TCP connection library for Java?Java的好TCP连接库?
【发布时间】:2009-03-17 23:55:05
【问题描述】:

我正在寻找具有以下功能的 Java 的良好 TCP 连接库:

1. Retry on failed publishes
2. Multiple connections

你成功使用了哪个库。

编辑:根据评论更改了问题以反映哪种类型的连接库。

【问题讨论】:

  • 请更具体些?数据库连接? TCP 连接?

标签: java connection


【解决方案1】:

可能是Apache MINA 会帮助你。看看。

【讨论】:

  • 我也使用它来构建一些非常复杂的后端通信渠道。它还具有许多过滤器,可添加诸如保活、压缩和加密等功能。
  • 是的,MINA 可以用来制作一个非常复杂的服务器程序,它需要一次处理许多 TCP/HTTP 连接。它拥有维护良好的线程池。您可以在 MINA 中创建一个过滤器链。它实际上是一个很棒的库
【解决方案2】:

我不确定这是否真的有意义。您说的是重试失败的发布,但 TCP 没有 发布 的概念。只是消息传递。因此,您可能正在发布,或者您可能正在请求信息。

例如基于 TCP 的 HTTP 具有动词 GET/PUT/POST(等等)。所有这些都通过 TCP 运行。只有两个实际写了一些东西(PUT/POST)。并且只有 PUT 应该是idempotent(也就是说,你应该能够一次又一次地进行相同的操作,得到相同的结果)。如果您重复发布,我希望重新发布一些内容并在服务器上为每个 POST 创建一个新版本。

以上只是关于如何实现 PUT/POST 的建议。我不希望 HTTP 库代表我承担这一点。

所以在 TCP 层重试消息的概念是错误的(注意 TCP 会重新发送数据包等组成消息)。这是一个更高级别的功能,它可能在较低级别使用 TCP。例如我已经编写了自己的 HTTPClient 包装器,以便在我的远程服务器暂时不可用或报告错误时重试 PUT(我不确定是否存在重试 HTTP 库)

【讨论】:

  • GET、HEAD、PUT 和 DELETE,这四个都是幂等的。 OPTIONS 和 TRACE 本质上是幂等的。而且我相信,只有 POST 是非幂等的。
  • 没错。我没有想的那么清楚。我想强调一下 PUT 和 POST,只有 PUT 是幂等的
【解决方案3】:

也许这对其他人有帮助,试试这个名为socketal 的库,纯Java 使用ServerSocketSocket,它非常简单并且没有任何不必要的功能。

这个库能够:

  1. 断开连接时自动重新连接
  2. 能够处理连接/断开/连接
  3. 发送StringObjectFile 非常简单
  4. 设置您自己的Authentication codeVerification,就像Login Password

看起来像Netty,但它们没有很多复杂的设置和功能。

兼容Android/Java

【讨论】:

  • socketla 链接已失效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-12
  • 2012-08-02
  • 1970-01-01
  • 2020-11-30
  • 2012-01-12
相关资源
最近更新 更多