Witam mam do napisania program,który
zamienia strumienie bajtowe na strumienie znakowe z użyciem klienta i serwera w javie.Serwer niestety nie odnajduje mi tego pliku w swoim katalogu roboczym;(
Oto kod:
package serwer;
import java.io.*;
import java.net.*;
public class FileServer{
public static void main(String[] srgs){
try{
File file = new File("file2.jpg");
if(file.exists()){
ServerSocket server = new ServerSocket(8000); // uruchamianie gniazda serwera
System.out.println("Server run...");
while(true){
Socket socket = server.accept();// akceptacja po��czenia z klientem
System.out.println("Client accepted...");
// OutputStream os = socket.getOutputStream();//pobieranie bajtowego strumienia WY
// BufferedOutputStream bos = new BufferedOutputStream(os);//buforowanie strumienia bajt�w
OutputStreamWriter os = new OutputStreamWriter(socket.getOutputStream());//pobieranie bajtowego strumienia WY
BufferedWriter bos = new BufferedWriter(os);//
//* OutputStream os = socket.getOutputStream();//pobieranie bajtowego strumienia WY
//* BufferedWriter bos = new BufferedWriter(new InputStreamReader (os, "Cp852"));//buforowanie strumienia bajt�w
// FileInputStream fis = new FileInputStream(file);//Tworzenie strumienia bajtowego WE do pliku
// BufferedInputStream bis = new BufferedInputStream(fis);//buforowanie strumienia bajt�w
FileReader fis = new FileReader(file);//Tworzenie strumienia bajtowego WE do pliku
BufferedReader bis = new BufferedReader(fis);//buforowanie strumienia bajt�w
int k = 0;
// byte[] data = new byte[512];//tablica (paczka) na dane
char[] data = new char[512];//tablica (paczka) na dane
System.out.println("File is sending ");
// while((k=bis.read(data))!=-1)//buforowany odczyt danych ze strumienia WE(pliku)
// bos.write(data,0,k);//buforowany zapis do strumienia WY
while((k=bis.read(data))!=-1)//buforowany odczyt danych ze strumienia WE(pliku)
bos.write(data,0,k);//buforowany zapis do strumienia WY
System.out.println("File has been sent");
// bis.close();
// bos.close();
bis.close();
bos.close();
socket.close();
System.out.println("Client disconnected ");
}
}else{
System.err.println("File 'file2.dat' doesn't exist in the main server directory...");
}
}catch(Exception e){
System.err.print(e);
}
}
}
I kod klienta:
package klient;
import java.io.*;
import java.net.*;
public class FileClient{
public static void main(String[] srgs){
try{
Socket socket = new Socket("localhost", 8000);//Nawi�zywanie po��czenia z serwerem
System.out.println("Connected to server...");
// InputStream is = socket.getInputStream();//pobieranie strumienia bajtowego WE
// BufferedInputStream bis = new BufferedInputStream(is);//buforowanie strumienia bajt�w
//* InputStream is = socket.getInputStream();//pobieranie strumienia bajtowego WE
//* BufferedInputStream bis = new BufferedInputStream(is);//buforowanie strumienia bajt�w
InputStreamReader is = new InputStreamReader (socket.getInputStream());
BufferedReader bis = new BufferedReader(is);//buforowanie strumienia bajt�w
File file = new File("file2.jpg");//Otwieranie pliku
//file.createNewFile();
// FileOutputStream fos = new FileOutputStream(file);//strumie� plikowy WY pracuj�cy na bajtach
// BufferedOutputStream bos = new BufferedOutputStream(fos);//buforowanie strumienia bajt�w
FileWriter fos = new FileWriter(file);//strumie� plikowy WY pracuj�cy na bajtach
BufferedWriter bos = new BufferedWriter(fos);//buforowanie strumienia bajt�w
int k = 0;
// byte[] data = new byte[512];//tablica (paczka) na dane
char[] data = new char[512];//tablica (paczka) na dane
System.out.println("File is downloading...");
// while((k=bis.read(data))!=-1)//buforowany odczyt danych ze strumienia WE(gniazda)
// bos.write(data,0,k);//bororowany zapis do pliku
while((k=bis.read(data))!=-1)//buforowany odczyt danych ze strumienia WE(gniazda)
bos.write(data,0,k);//bororowany zapis do pliku
System.out.println("File downloaded");
// bis.close();
// bos.close();
bis.close();
bos.close();
socket.close();
}catch(Exception e){
System.err.print(e);
}
}
}
Dodam,że piszę w netbeansie.
Dzięki za wszelką pomoc