Radim klijent server aplikaciju, koristim rmi tehnologiju. Pored osnovnih operacija zelim da implementiram i jednu dodatnu. Kada se klijent pokrene trebao bi automatski da kreira fajl na url-u gde se nalaze Interfejs.class i InterfejsImpl_Stub.class, tj. na tom url-u server upisuje ova dva fajla. Koristim IIS gde sam cekirala opciju Write. Evo kako mi izgleda kod za jedan primer koji pravi fajl na nekoj url adresi:
package upisivanjeufajl;
import java.io.*;
import java.net.*;
public class Upisivanje {
static OutputStream os;
static OutputStreamWriter fos;
public static boolean posalji(String ip, String fajl){
try{
URL url = new URL("http://" + ip
+ "/javarmi/" + fajl);
System.out.println(url.getFile());
URLConnection urlc = url.openConnection();
urlc.setDoOutput(true);
os = urlc.getOutputStream();
fos = new OutputStreamWriter(os);
System.out.println("FOS: " + urlc.getContentLength());
}
catch(Exception e){
e.printStackTrace();
return false;
}
return true;
}
public static void upisi(String poruka){
try{
fos.write('a');
fos.write(1);
fos.flush();
}
catch(Exception e){
e.printStackTrace();
}
}
public static boolean preuzmi(String ip, String fajl){
try{
int c;
URL url = new URL("http://" + ip
+ "/javarmi/" + fajl);
URLConnection urlc = url.openConnection();
int duzina = urlc.getContentLength() + 1;
if(duzina > 0){
InputStream is = urlc.getInputStream();
//FileOutputStream fos = new FileOutputStream(fajl);
//DataOutputStream dos = new DataOutputStream(fos);
int i = duzina;
while(((c = is.read()) != -1) && (--i > 0)){
//dos.writeByte(c);
//System.out.println((byte)c);
}
is.close();
fos.close();
}
return true;
}
catch(Exception e){
e.printStackTrace();
return false;
}
}
public static void main(String[] args) throws Exception {
posalji("127.0.0.1", "1.txt");
upisi("Zdravo");
preuzmi("127.0.0.1", "1.txt");
}
}
Medjutim program ne pravi fajl i program naravno puca kod metode preuzmi posto nije nasao fajl.
U cemu gresim?
Hvala.