Java Spring集成IP-通过套接字忽略消息末尾的回车符(\r\n)

Java Spring集成IP-通过套接字忽略消息末尾的回车符(\r\n),java,spring,sockets,spring-integration,spring-messaging,Java,Spring,Sockets,Spring Integration,Spring Messaging,当我将字节数组发送到响应通道时,我希望只将该字节数组发送到套接字。例如,在spring中集成ip @ServiceActivator(inputChannel = "serviceChannel") public byte[] service(byte[] byteArray) { return new byte[]{0,2,1,0}; } 我希望它能发送出去 00, 02, 01, 00 但是!这还将向流发送两个附加字节 00, 02, 01, 00 , 0D, 0A 用于消息

当我将字节数组发送到响应通道时,我希望只将该字节数组发送到套接字。例如,在spring中集成ip

@ServiceActivator(inputChannel = "serviceChannel")
public byte[] service(byte[] byteArray) {
    return new byte[]{0,2,1,0};
}
我希望它能发送出去

00, 02, 01, 00
但是!这还将向流发送两个附加字节

00, 02, 01, 00 , 0D, 0A 
用于消息结尾。我不想发送这些字节,也就是说,我想省略它们。如何做到这一点

我怀疑这与套接字如何解释消息有关,但无论我如何尝试,我都没有找到发生这种情况的地方

upd:我发现了问题:我的配置中的Spring使用ByteArrayCrLfSerializer类,但我需要使用ByteArrayRawSerializer类。我如何才能做到这一点?

请参阅

您通常需要某种方法来划分流中的多个消息。如果数据本身包含此类信息,则可以使用ByteArrayRawSerializer,它不会添加任何字符

如果您使用的是XML配置,请使用serializer=raw,其中raw是一个带有ByteArrayRawSerializer类的类。如果您使用的是java配置,只需在@Bean中设置序列化程序


如果您需要使用Spring Integration对此类消息进行解码,并且通过套接字发送了多条消息,则需要自定义反序列化程序。

回答者不会收到问题编辑的通知;你应该对我的回答发表评论。您需要显示连接工厂配置并编辑问题。如果您使用的是XML配置,请使用serializer=raw,其中raw是一个带有ByteArrayRawSerializer类的类。如果您使用的是java配置,只需设置序列化程序即可。我当时没有看到您的答案:thanks@GaryRussell我认为这应该添加到您的答案中,然后它将是完整的,我将能够接受它,谢谢: