Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring TCP通过传入连接发送数据_Java_Spring_Spring Integration - Fatal编程技术网

Java Spring TCP通过传入连接发送数据

Java Spring TCP通过传入连接发送数据,java,spring,spring-integration,Java,Spring,Spring Integration,如何配置Spring来接收TCP连接,然后通过它发送数据?我将数据存储在RabbitMQ队列中,需要通过传入连接发送此数据 我假设客户机按照以下方式工作:client mode=true。我已经找到了一个关于如何在这个用例中表现为客户机的例子,但是我找不到服务器端的例子。谁能给我指一下正确的方向吗 我不确定这是否是一个标准用例,在我看来,客户端正在启动连接,而不是服务器,但我对TCP几乎没有经验。您不需要客户端模式;这适用于希望入站适配器启动套接字打开的情况。使用带有服务器连接工厂的TcpSen

如何配置Spring来接收TCP连接,然后通过它发送数据?我将数据存储在RabbitMQ队列中,需要通过传入连接发送此数据

我假设客户机按照以下方式工作:
client mode=true
。我已经找到了一个关于如何在这个用例中表现为客户机的例子,但是我找不到服务器端的例子。谁能给我指一下正确的方向吗


我不确定这是否是一个标准用例,在我看来,客户端正在启动连接,而不是服务器,但我对TCP几乎没有经验。

您不需要客户端模式;这适用于希望入站适配器启动套接字打开的情况。使用带有服务器连接工厂的
TcpSendingMessageHandler
侦听端口

添加一个侦听
TcpConnectionOpenEvent
ApplicationListener
bean


事件将具有连接id,对于任何发送的消息,您必须在消息头(
IpHeaders.connection\u id
)中捕获并设置该id,以便适配器知道将消息发送到何处。

但相同的文档中包含入站配置示例2段落;]我想我不明白它是怎么工作的。。。
TcpInboundGateway
有一个
请求通道
和一个
回复通道
,用于返回对请求的回复。如果客户端连接时没有任何消息,只是想接收数据,我仍然应该使用
TcpInboundGateway
?是的,客户端仍然是“initializind”端。请记住,发送数据是在建立连接之后很久的事情。如果您已清除连接,则无论客户端在做什么,都允许您将数据写入基础套接字。请使用带服务器连接工厂的出站适配器。看我的答案。我想你是指
TcpSendingMessageHandler
?如果我想将消息发送到所有打开的连接,我假设我必须将来自服务器连接工厂(
connectionFactoryName
事件参数)的每个连接id的消息相乘,并删除
TcpConnectionClosedEvent
上的连接。是的,对不起;固定的。如果要向所有连接广播,只需在服务器连接工厂中调用
getOpenConnectionIds()
;它将返回当前打开的连接ID列表(存在竞争,因此需要捕获异常,以防连接同时关闭)。