我已经实现了TCP套接字服务器,它接受来自客户端的传入XML消息。我可以通过telnet发送消息。
但是当我尝试建立连接并通过python脚本发送消息时,我收到了IOException:在最大消息长度之前找不到CRLF:2048。所以我添加了ByteArrayLengthHeaderSerializer来序列化和反序列化,但是现在我得到了以下错误
IOException:消息长度1014132591超过最大消息长度:2048
虽然我正在增加最大消息长度,但我收到了IOException:在1014132591之后关闭了流
有人可以告诉我如何解决问题。
final AbstractServerConnectionFactory crLfServer = context.getBean(AbstractServerConnectionFactory.class);
ByteArrayLengthHeaderSerializer serializer = new ByteArrayLengthHeaderSerializer();
serializer.setMaxMessageSize(1000 * 1024);
crLfServer.setSerializer(serializer);
crLfServer.setDeserializer(serializer);

我已经使用Spring Integration实现了.Below是我的入站适配器的片段
@Bean
public TcpReceivingChannelAdapter inboundAdapter(AbstractServerConnectionFactory connectionFactory) {
System.out.println("Creating inbound adapter");
TcpReceivingChannelAdapter inbound = new TcpReceivingChannelAdapter();
inbound.setConnectionFactory(connectionFactory);
//inbound.
inbound.setOutputChannel(fromTcp());
return inbound;
}

答案 0 :(得分:1)
我认为在消息之后在您的脚本中准确发送CRLF可能会更好。这将是要反序列化的消息的完全分隔符。这是上述Telnet使用的内容之一。但是,您需要返回连接工厂配置中的默认解串器。