【问题标题】:Passing socket objects between processes, TCP, Java在进程、TCP、Java 之间传递套接字对象
【发布时间】:2011-09-30 10:07:17
【问题描述】:

好吧,我发现 Sockets 不可序列化...所以我不能通过 TCP 传递它们...

我的问题是我有一个家庭作业,我有 10 台服务器必须在一个套接字上侦听(我们称之为请求)。对于来自写入该套接字的 x 个客户端中的任何一个的输入。然后,在其中一个服务器进程从请求中读取消息后,它必须通过自己的套接字与该客户端通信......

我尝试在服务器端创建每个服务器套接字和请求套接字,然后在客户端连接到服务器时将它们传递给客户端...但这不起作用...

关于我如何做到这一点的任何提示?让 TCP 不是 1-1 真的是在玩弄我。

【问题讨论】:

  • 不,“通过”套接字没有任何意义。
  • 我不明白您所说的“让 TCP 不是 1-1”是什么意思。 TCP 绝对是点对点协议。

标签: java sockets tcp process


【解决方案1】:

通过 TCP 连接传递套接字就像试图通过电话传递电话,或尝试传真您的传真机。您需要做的是在相关各方之间组织另一个联系

编辑:事实上,你所说的分配甚至没有意义:

我有 10 台服务器必须在一个套接字上侦听(让我们称之为 请求)。

这甚至不是正确的术语。服务器监听端口,而不是套接字,10 个服务器监听一个端口是不可能的。它们必须各自拥有自己的端口。

对于来自 x 个写入该套接字的客户端中的任何一个的输入。

见上文。客户端不会写入“那个套接字”。他们创建自己的连接到服务器端口的套接字,然后写入。

然后在其中一个服务器进程从请求中读取消息后 必须通过自己的套接字与该客户端通信

如果服务器收到来自客户端的连接,则它已经有一个套接字代表它到该连接的端点。所以服务器所要做的就是将响应写回它读取请求的同一个套接字。

简而言之,您有一个主要的术语问题,但您根本没有软件问题。

【讨论】:

  • 这个问题真的让我大吃一惊……它扭曲了我所知道的关于正确的服务器设计的一切。我们使用套接字作为消息传递结构。我猜这个术语服务器被松散地使用了。基本上 n 服务器进程应该从同一个 TCP 流中读取。并且不知何故,m 客户端应该能够写入该流。我已经放弃了第二部分,因为我认为 TCP 不可能。
  • @Michael 如果这是问题的真正要求,那么它完全是一派胡言,应该退回给发件人,或者在星期四早上与垃圾一起扔掉。早期的。然而,我发现这完全不可能相信。我建议您编辑您的问题以包含问题的实际文本。
【解决方案2】:

传递套接字对我来说似乎很疯狂。如果您正在尝试编写更好的服务器,那么您将很难击败Netty。我建议你看看。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    相关资源
    最近更新 更多