java 报文长度计算_从TcpClient.GetStream()读取而不知道长度 - java

我正在研究基于TCP的通信协议。我所知

有很多方法可以确定何时结束阅读。

在消息末尾关闭连接

将消息的长度放在数据本身之前

使用分隔符;一些在正常数据中永远不会出现的值(或者总会以某种方式转义)

通常,我尝试通过WiFi网络发送文件(可能不稳定且速度较慢)

RSA和AES通信的原因我不想每次都关闭连接(不能使用1)

这是一个很大的文件,我无法预测它的长度,因此我无法采取行动

作为方法(不能使用2)

读取时检查特殊内容,写入时进行转义需要很多过程(不能使用3)

此方法应与c#和java兼容。

你有什么建议?

更一般的问题:

How to identify end of InputStream in java

C# - TcpClient - Detecting end of stream?

更多信息

我正在编码TCP客户端服务器通信

首先,服务器生成RSA公共代码并将其发送到客户端。

然后,客户端将生成AES(key,IV)并使用RSA加密将其发送回去。

直到这里一切都很好。

但我想通过该网络发送文件。这是我当前的数据包EncryptUsingAES(新AES.IV(16字节)+ file.content(任何大小))

在服务器中,我无法捕获客户端发送的所有数据。所以我需要知道要读取多少数据(TcpClient.GetStream()。read(buffer,0,buffersize))

当前代码:

List message = new List();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值