基于Spring Integration实现TCP代理协议反序列化的方案探讨
解析TCP连接代理协议头的最优方案探讨
我正在寻求解析TCP连接中代理协议头的最优方案,需根据代理头中的数据判断是否接受或拒绝连接。
TCP负载为流式数据,无明确的「消息」定义。我们使用自定义反序列化器,仅读取InputStream并返回包含当前流中数据的byte[],代码如下:
protected final byte[] doDeserialize(InputStream inputStream, byte[] buffer) throws IOException { int len = inputStream.read(buffer, 0, buffer.length); if (len < 0) throw new IOException("Stream closed"); return this.copyToSizedArray(buffer, len); }
此前有一个10年前的相关问题,我希望借助Spring Integration TCP/IP库的更新能力解决问题。
经调研,潜在解决方案如下:
- 在反序列化器中读取代理头,并通知TCP服务器工厂保留/断开连接
- 在TCP拦截器中读取反序列化后的byte[],但存在代理头被拆分为多个消息的风险
- 创建自定义ServerConnectionFactory来实现该逻辑
内容的提问来源于stack exchange,提问作者tyhennig
相关产品推荐
相关产品推荐

