gpt4 book ai didi

Java TCP-Sockets 传输大于 4gb 的文件

转载 作者:可可西里 更新时间:2023-11-01 02:40:52 25 4
gpt4 key购买 nike

<分区>

我正在尝试使用 Java SocketsAPI 传输大于 4gb 的文件。我已经通过 InputStreams 读取它并通过 OutputStreams 写入它。然而,在 Wireshark 中分析传输的数据包,我意识到 TCP 数据包的序列号随着数据包的字节长度增加,似乎是 1440 字节。

这导致当我尝试发送大于4gb的文件时,超过了TCP的Sequence-Number字段的总大小,导致很多错误包,但在Java中没有错误。

我的传输代码目前如下所示:

 DataOutputStream fileTransmissionStream = new DataOutputStream(transmissionSocket.getOutputStream());
FileInputStream fis = new FileInputStream(toBeSent);
int totalFileSize = fis.available();
fileTransmissionStream.writeInt(totalFileSize);
while (totalFileSize >0){
if(totalFileSize >= FileTransmissionManagementService.splittedTransmissionSize){
sendBytes = new byte[FileTransmissionManagementService.splittedTransmissionSize];
fis.read(sendBytes);
totalFileSize -= FileTransmissionManagementService.splittedTransmissionSize;
} else {
sendBytes = new byte[totalFileSize];
fis.read(sendBytes);
totalFileSize = 0;
}
byte[] encryptedBytes = DataEncryptor.encrypt(sendBytes);
/*byte[] bytesx = ByteBuffer.allocate(4).putInt(encryptedBytes.length).array();
fileTransmissionStream.write(bytesx,0,4);*/
fileTransmissionStream.writeInt(encryptedBytes.length);
fileTransmissionStream.write(encryptedBytes, 0, encryptedBytes.length);

在这种情况下我到底做错了什么,还是不能通过一个 Socket 传输大于 4gb 的文件?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com