首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在同一个TCP套接字上多个独立的全双工流。

在同一个TCP套接字上多个独立的全双工流。
EN

Stack Overflow用户
提问于 2011-08-26 15:27:28
回答 1查看 1.4K关注 0票数 6

这可能是这里每个人问的最奇怪的问题。我会尽我所能解释的。

我需要用Java快速开发一个网络应用程序,集成一堆旧的网络应用程序(我已经有了它们的代码),并使所有的东西一起工作。每个旧应用程序都将成为新应用程序的一个子功能;新应用程序从根本上说是一个“包装器”。

显然,这些应用程序(在不同时间由不同的人开发)以不同的方式、不同的协议、不同的消息语法(即一些协议使用二进制消息,另一些使用HTTP类消息,另一些使用XML)和不同的消息顺序策略(流水线、停止和等待等)工作。

幸运的是,它们都是TCP。

包装器应用程序应该在不同的端口上打开类似于6-7个不同的套接字,这对我们的网络管理员是不好的。他们只想要一个端口上的一个插座。所以所有的协议都得压在同一根管子上。

在完全相同的TCP套接字(TCP套接字)上,是否有任何纯Java、开箱即用的解决方案来解决复用和解复用--许多独立的全双工流--以透明和无麻烦的方式?

还是有更简单的解决办法我忘记了?

编辑:子流是独立的,也就是说,一个子流等待来自另一个子流的东西不可能导致死锁。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-26 15:36:31

您不能在TCP上以透明的方式这样做。

例如,考虑如果应用程序通过一个“通道”发送请求,该请求取决于它在另一个“通道”上获得的数据。如果一个网络条件丢弃了一个“通道”的足够数据包,导致您的TCP连接停止(由于TCP窗口)等待响应,您实际上是在同一个TCP连接中延迟所有其他“通道”,因为它们共享相同的窗口,您可能会陷入死锁。

在此之前,在同一个窗口中的每个通道上都不会发生这种情况。

这可能影响或不影响您的特定应用程序--但它可能会影响您的应用程序,因此这种技术是不透明的。如果可能的话,您可以尝试使用SCTP来克服这个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7207069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档