Я пытаюсь создать FileEchoServer.У меня нет проблем с отправкой одного файла.Но если я попытаюсь отправить файл обратно клиенту, мой приемник для первого файла все еще открыт.Я пытался использовать outputStream.flush ();на Outputstream клиента, но это не помогает.Код ниже является сервером и клиентом в одном куске.Я надеюсь, что кто-то может помочь мне, потому что я не могу найти свою ошибку.
public class Main {
private static int PORT = 5864;
public static void main(String[] args) throws Exception{
String[] options = new String[] {"Server", "Client"};
int response = JOptionPane.showOptionDialog(null, "Start Client or Server?", "Choose",
JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE,
null, options, options[0]);
switch (response){
case(0):
Server();
break;
case(1):
Client();
break;
case(-1):
System.exit(0);
}
}
private static void Server() throws Exception{
ServerSocket serverSocket = new ServerSocket(PORT);
Socket socket = serverSocket.accept();
OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream();
File tempFile = File.createTempFile("i dont", "care");
tempFile.deleteOnExit();
FileOutputStream fileOutputStream = new FileOutputStream(tempFile);
pushStream(inputStream, fileOutputStream);
fileOutputStream.close();
FileInputStream fileInputStream = new FileInputStream(tempFile);
pushStream(fileInputStream, outputStream);
fileInputStream.close();
inputStream.close();
outputStream.close();
socket.close();
serverSocket.close();
}
private static void Client() throws Exception{
String HOST = "localhost";
Socket socket1 = new Socket(HOST, PORT);
OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream();
FileInputStream fileInputStream = new FileInputStream("C:\\Users\\jerem\\Desktop\\Senden Client\\image_test.png");
pushStream(fileInputStream, outputStream);
fileInputStream.close();
FileOutputStream fileOutputStream = new FileOutputStream(new File("C:\\Users\\jerem\\Desktop\\Recieve Client\\dateiAngekommen.png"));
pushStream(inputStream, fileOutputStream);
fileOutputStream.close();
fileInputStream.close();
outputStream.close();
inputStream.close();
socket.close();
}
private static void pushStream(InputStream inputStream, OutputStream outputStream) throws Exception{
byte[] bytes = new byte[16 * 1024];
int count;
while ((count = inputStream.read(bytes)) > 0) {
System.out.println(count);
outputStream.write(bytes, 0, count);
}
System.out.println("Done");
}
}