首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Java的套接字上传输文件信息和多个文件?

如何在Java的套接字上传输文件信息和多个文件?
EN

Stack Overflow用户
提问于 2013-10-17 06:49:23
回答 1查看 104关注 0票数 0

我有一个客户端和一个服务器通过TCP套接字相互通信。客户端希望将两个文件和一些文件的描述传输到服务器。我想设计一种协议,一旦客户端和服务器之间建立了套接字,服务器将希望首先接收文件描述,然后接收两个文件。目前,使用以下代码,服务器可以接收到描述,但无法区分这两个文件(从客户端传输的两个文件在服务器上合并为一个文件)。我在这个问题上找到了类似的线索。但是他们分别讨论了“文件信息+一个文件”和“没有文件前信息的多个文件”。请给我一个解决这个问题的提示。非常感谢。

服务器端代码

代码语言:javascript
运行
复制
dis = new DataInputStream(clientSocket.getInputStream());
callInfo = dis.readUTF();
callInfos = callInfo.split(" ");

FileOutputStream fos = new FileOutputStream(File1);
byte[] buffer = new byte[clientSocket.getReceiveBufferSize()];
int bytesReceived = 0;
while ((bytesReceived = dis.read(buffer)) > 0)
    fos.write(buffer, 0, bytesReceived);
fos.flush();
fos.close();

fos = new FileOutputStream(File2);
while ((bytesReceived = dis.read(buffer)) > 0)
    fos.write(buffer, 0, bytesReceived);
fos.flush();
fos.close();

客户端代码

代码语言:javascript
运行
复制
String fileIno = "fileIno";
byte[] buffer = new byte[socket.getSendBufferSize()];
int bytesRead = 0;
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF(fileInfo);

FileInputStream file = new FileInputStream(File1);
while ((bytesRead = file.read(buffer)) > 0)
    dos.write(buffer, 0, bytesRead);
dos.flush();
file.close();

file = new FileInputStream(File2);
while ((bytesRead = file.read(buffer)) > 0)
    dos.write(buffer, 0, bytesRead);
dos.flush();
file.close();
EN

回答 1

Stack Overflow用户

发布于 2013-10-17 06:53:00

设计您的协议,以便“文件描述”信息包括每个文件中的字节数。然后,您将知道第一个文件从哪里开始和结束,第二个文件从哪里开始和结束。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19420028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档