In alcuni esercizi č richiesto di inviare qualcosa sulla connessione gią aperta, io utilizzo lo stesso buffer di output per inviare una stringa, ma il Server risponde null. Come fate voi ad inviare sulla stessa connessione aperta?
Ecco il codice:
codice:
import java.io.*;
import java.net.*;
public class Client{
public static void main(String [] args) throws Exception
{
/*try{*/
final String SERVERADDR= "151.97.252.130";
final int PORT=80;
InetAddress addr=InetAddress.getByName(SERVERADDR);
final String msg= "GET /pappalardo/prova/06.aux\n";
int index=0;
String s="";
boolean trovato=false;
String tmp="";
Socket client=new Socket(addr, PORT);
OutputStreamWriter o=new OutputStreamWriter(client.getOutputStream());
BufferedWriter w=new BufferedWriter(o);
PrintWriter out=new PrintWriter(w, true);
System.out.println("Invio la stringa: "+"GET /pappalardo/prova/06.aux\n");
out.println("GET /pappalardo/prova/06.aux\n");
InputStreamReader in=new InputStreamReader(client.getInputStream());
BufferedReader reader=new BufferedReader(in);
while(!trovato){
tmp=reader.readLine();
for(int i=0; i<tmp.length(); i++){
if(tmp.charAt(i)!='x' && tmp.charAt(i)!=' ' && tmp.charAt(i)!='\n'){
index=i;
trovato=true;
break;
}
}
}
s+=tmp.substring(index);
while(reader.ready()){
s+=reader.readLine();
}
s+='\n';
s=""+" GET /pappalardo/prova/06b.aux";
System.out.println("Invio su connessione aperta: "+s);
OutputStreamWriter o2=new OutputStreamWriter(client.getOutputStream());
BufferedWriter w2=new BufferedWriter(o2);
PrintWriter out2=new PrintWriter(w2, true);
//out.flush(); //Server nuovo stream output????
//out.println(s);
out2.println(s);
InputStreamReader i2=new InputStreamReader(client.getInputStream());
BufferedReader reader2=new BufferedReader(i2);
System.out.println("Ho ricevuto: "+reader2.readLine());
client.close();
reader2.close();
reader.close();
out.close();
/* }
catch(Exception e){
System.out.println("Errore!!!");
}*/
}
}