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