Хорошо ... Попытка самостоятельно изучить Java, возникла проблема с этим на некоторое время. Я пытаюсь передать большой файл по сети с помощью сокетов и буферизованных потоков ввода и вывода. Неважно, какой размер файла я пытаюсь передать. Надеюсь, я правильно разместил свой код, я знаю, что, вероятно, многие проблемы с этим кодом, хотя он компилируется и работает нормально, я получаю IndexOutOfBoundsException, второй клиент и сервер идут в циклы while, сервер получает его во время первого бис.read (ЬиЕ, 0, длина), и клиент получает его во время (от = fis.read (ЬиЕ, 0, длина) ..... Любая помощь будет принята с благодарностьюПередача сокета Java, буферизованный ввод и вывод
//Server Receive code receive method and main for testing
public File receive(Socket socket) throws IOException{
//temporarily hard coded filename
File file = new File("C:\\users\\tom5\\desktop\\sales\\input.dat");
DataInputStream dis = new DataInputStream(socket.getInputStream());
FileOutputStream fos = new FileOutputStream(file);
BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
//reads file length from datainputstream
int len = dis.readInt();
dis.close();
int bytesRead=0;
//create buffer
byte[]buf = new byte[4092];
int off = 0;
//read from BufferedInputStream and write to FileOutputStream?
while(bytesRead < len) {
bis.read(buf,0,len);
fos.write(buf,0,len);
bytesRead++;
}
fos.close();
bis.close();
return file;
}
public static void main(String[]args) throws IOException{
Server server = new Server();
Socket socket =server.accept();
File file = server.receive(socket);
}
}
//Client sending code
public void send(Socket socket,File file) throws IOException{
FileInputStream fis = new FileInputStream(file);
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
int len = (int)file.length();
dos.writeInt(len);
dos.flush();
dos.close();
System.out.println(file.length());
byte[]buf = new byte[4092];
int off= 0;
while((off = fis.read(buf,0,len)) != -1 ){
bos.write(buf,0,len);
}
}
public static void main(String[]args) throws UnknownHostException, IOException{
Client client = new Client();
Socket socket =client.connect("localhost",1055);
File file = new File("C:\\users\\tom5\\desktop\\movie.avi");
}
}
Oen вещь, которую я заметил сразу с места в карьер, состоит в том, что у вас есть * два метода '' main'. – fireshadow52
Я считаю, что это код для сервера и для клиента, не работающий одновременно. –
@NickMartin А я вижу. Сожалею! – fireshadow52