TCP ソケットを介して相互に通信する 1 つのクライアントと 1 つのサーバーがあります。クライアントは、2 つのファイルとファイルの説明をサーバーに転送したいと考えています。クライアントとサーバーの間でソケットが確立されると、サーバーは最初にファイルの説明を受信し、次に 2 つのファイルを受信することを期待するプロトコルを設計したいと考えています。現在、次のコードでは、サーバーは説明を受信できますが、2 つのファイルを区別できません (クライアントから転送された 2 つのファイルは、サーバーで 1 つのファイルにマージされます)。この問題について同様のスレッドを見つけました。しかし、彼らは「ファイル情報 + 1 つの単一ファイル」と「事前ファイル情報なしの複数ファイル」について別々に議論しました。この問題を解決するヒントを教えてください。どうもありがとう。
サーバー側コード
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();