我正在研究基于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();